cronからphpを起動させると、 file_put_contents が動作しません。

webブラウザからURLを叩いて起動させると file_put_contents が動作します。

★こんな動作です
file_put_contents("test.txt","ok");

★cronから起動できているか?の懸念
同じスクリプト内で↓この個所がちゃんと動いています。
mail('mymail@example.com', '動いた', 'okok');
メールが届いているので起動していないわけではありません。
ちなみにユーザはrootで動かしてます。

原因が想像できる方は是非教えてください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/04/10 03:09:51
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:tdoi No.1

回答回数174ベストアンサー獲得回数75

ポイント100pt

Webサーバ経由でPHPが起動された場合と、cronで起動された場合では、カレントディレクトリが異なります。

そのため、質問文中にあるように、

file_put_contents("test.txt","ok");

と、test.txtと相対パスで記述してあれば、対象となるファイルがことなります。

Webサーバ経由であれば、このスクリプトと同階層のtest.txtとなり、cronにより起動された場合は(確か)起動ユーザのホームになるはずです。

/var/www/html/test.phpというスクリプトに記述していたとすると、

Webサーバ経由では、/var/www/html/test.txtというファイルにokと出力されますが、

cron経由では、/root/test.txtというファイルにokと出力されるかと思います。

まずは、これを確認してみてください。

こうでない場合は、なんらかのエラーになっていると思われますので、ログなどを確認してみてください。


何かの参考になれば。

id:freewriter

file_put_contents("/var/www/html/test.txt","ok");

これで出来ました!

いやーそういうことだったんですね。。

大変ありがとうございます。

2009/04/10 03:09:27

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません