• ベストアンサー

crontab -lの結果取得

教えて下さい。 <? $lines = shell_exec("crontab -l"); echo $lines; ?> 上記結果でcronのジョブ一覧を取得したかったのですが、期待通りの結果が返ってきませんでした。(何も取得できませんでした。) crontab -l自体は通常のコマンドとして使えているのですが、、 実行ユーザーの問題かと思い、"crontab -u root -l"ともしてみましたが結果は同じでした。 また、パスの問題かと思い、"/usr/bin/crontab -u root -l"ともしてみましたが結果は同じでした。 この場合、どこが問題となっているのでしょうか。 宜しくお願い致します。 FedoraCore9 php-5.2.5-7.fc9.i386 httpd-2.2.9-1.fc9.i386

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

このPHPを実行しているユーザは誰ですか? もしかしてWebから? だったら、実行ユーザはapacheになるのでcrontab -lの結果はapacheのcron一覧になりますよね。 大抵はapacheにcronを設定していることは無いので返り値は空のはず。 > 実行ユーザーの問題かと思い、"crontab -u root -l"ともしてみましたが結果は同じでした。 ユーザを指定できるのはrootのみですが、その辺は大丈夫ですか?

mikanuri
質問者

お礼

ご返信有り難う御座います。 PHP云々の前にcronについて理解していなかったようです。 ご指摘のとおり、apacheユーザーでcronを設定することで解決しました。 有り難う御座いました。

その他の回答 (1)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

問題点は既に指摘されているようなので、解決策の案だけ 案1.suPHPの導入 案2.suexecの導入 案3.sudo経由で実行する 案4.crontabで"crontab -l"の結果を定期的にファイルに保存しておきPHPではその結果を読むだけにする 案1~3はセキュリティー上の対策が必要 案4を推奨します。

mikanuri
質問者

お礼

ご返信有り難う御座います。 今回解決策としてapacheユーザーでcronを設定することにしました。 4の案は参考になりましたが、リアルタイムにcrontabを見たかったため、上記解決策としました。

関連するQ&A