人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

サーバの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です。

●質問者: kt26
●カテゴリ:ウェブ制作
✍キーワード:CGI Date. dB HOME PHP
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● lee_false
●50ポイント

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

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

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

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

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

◎質問者からの返答

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

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


2 ● b-wind
●25ポイント

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

される。


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

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

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

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


3 ● kiku-_-san
●5ポイント

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ