cron で PHP 実行時に require_once のファイルが参照できない
2008-7-31 15:39
PHP は apache と組み合わせて動作させるだけではなく、php -f ファイル名 として、バッチファイルのように動作させることも可能です。
ところが、このときに require_once や include_once の参照先が見つからないことがあります。cron で php で作成したスクリプトを実行しようとしたときに次のようなエラーで悩まされました。
PHP Warning: require_once(../hoge/foo.php): failed to open stream: No such file or directory
require_once などで、require_once("../hoge/foo.php")
のように相対指定をしているとダメなようです。これを回避するには require_once("/var/bar/hoge/foo.php")
のようにルートからの絶対パスで書くか、cron 実行時にディレクトリを移動するように cron に記述をする必要がありました。
cd /var/bar/batchdir && php -f/var/bar/batchdir/example.php
CRONでうまくいかず、探していたらこの記事を見つけました。
おかげでうまくいきました。ありがとうございます!
コメント by ロイ — 2009-08-20 16:05