1

PHP スクリプトを cron ジョブとして実行する場合と、ブラウザーでアクセスする場合の違いについて、私は混乱していると思います。test.php を Safari で叩いてテストすると、期待どおりにテキスト ファイルに書き込み、DB エントリが作成されます。cron ジョブとして実行すると、テキスト ファイルへの書き込み以外はすべて実行されます。

ファイルの先頭に #!/usr/bin/php を挿入して、PHP パーサーに向かわないように対処しました。

スクリプトが Safari 経由で動作するのに、cron 経由でテキスト ファイルに書き込めないのはなぜですか?

(これは単純な fopen、fwrite、fclose のコードなので、明らかにしても意味がないと思います)

4

2 に答える 2

3

ユーザー権限になります。apache(または使用しているWebサーバー)にはそのフォルダーへの書き込み権限がある場合がありますが、cronユーザーは、同じグループの両方のメンバーにするか、問題を解決するフォルダーを誰でも書き込み可能にする場合は許可しません

誰でも書き込み可能にすることは、適切なセキュリティ対策ではないことに注意してください

于 2009-08-14T02:01:49.430 に答える
1

fopen を実行する前に、既存の書き込み可能な場所に chdir してみてください。cron がどこで実行されているかわかりません。

于 2009-08-14T02:01:45.967 に答える