サーバのcronでPHPファイルにアクセスする方法で質問です。


crontabを以下のように設定しました。
0 0 * * * /usr/bin/php /home/test/public_html/update.php

しかし、実行されません。
(ファイルに直接アクセスした場合は、実行されます)

update.phpは更新用ファイルで、DB接続用の外部ファイルをincludeで読み込んでいるのが原因なのか?
と思い、1つのファイル上に更新用の記述を書いたところ、今度はcronで実行されました。

cronで実行させようと思った場合、includeやrequireなどの外部ファイル指定は適応されないのでしょうか?

もし出来ない場合、どうすればいいのでしょうか?
シェルスクリプトやCGI版として動作させる方法以外で対処法がありましたら、教えて下さい。

サーバはCentOS4.3です。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/05/27 13:58:18
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:lee_false No.1

回答回数5ベストアンサー獲得回数0

ポイント50pt

cronを実行しているユーザが読み取り権限の無いスクリプトを見ようとしていることはないですか?

includeやrequireの場合、パスが相対パスになっていて読めていないことがあります。

chdir(dirname(__FILE__))などを実行することでカレントディレクトリを固定してしまうなどの対策を取ることが出来ます。

とりあえず、ログを出力してcronが定時に動作しているかを確認すると良いと思われます。

(もちろんerror_reporting(E_ALL)などでエラーが表示されるようにして)

id:kt26

確かに相対パスの問題でして、dirnameで絶対パスを指定すると、実行されました。

回答ありがとうございました。

2008/05/27 13:56:59
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント25pt

includeやrequireなどの外部ファイル指定は適応されないのでしょうか?

される。


PHP: コア php.ini ディレクティブに関する説明 - Manual

おそらくファイル指定を相対パスで指定しているのではないだろうか?

Web サーバーから実行される場合と CRON から実行される場合ではスクリプトから見たカレントディレクトリが違う。

フルパスで書けば動作するはず。

id:kiku-_-san No.3

回答回数7ベストアンサー獲得回数0

ポイント5pt

includeパスが通っていないかもしれません。

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

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

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

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

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