【cron】require_onceがエラー【include_path】

現象

さくらのレンタルサーバにて、
ブラウザから呼び出すと正常動作するプログラムが、
CRONにて自動実行するとエラーとなる現象が発生。
調べると、require_onceの、PEARライブラリの読み込みエラーでした。

原因

PHP: include – Manual <http://php.net/manual/ja/function.include.php>
require_once(やinclude_onceなど)のインクルードにおいて、
パスを指定しない場合は include_path の設定を利用しるようです。
私の場合、通常はphp.iniに記載されたPEARのinclude_pathが設定されていましたが、
CRONからだとそれが設定されていませんでした。
CRONでは上位階層にあるphp.iniが読み込まれないか なにかなのでしょう。

解決

ini_set関数でinclude_pathをセットしてもうまくいかなったので、
CRONの実行コマンドを、以下へ変更して解決。

// cdでPEARのパスへ移動し、そこからPHPで、実行ファイルを実行する
cd /home/ユーザ名/PEARパス && /usr/local/bin/php -f /home/ユーザ名/実行ファイル名.php

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です