6

php スクリプトが cron からタイムアウトまで実行された後にこの問題に気付きましたが、コマンド ラインから手動で実行した場合は問題ありませんでした。(PHP では、デフォルトで CLI の max_execution_time は 0 です)

そこで、次のような単純な cron を実行しようとしました。

50 8 * * * php -q /tmp/phpinfo.php > /tmp/phpinfo

スクリプトは phpinfo() を呼び出すだけです。

驚いたことに、それは phpinfo を html 形式で書き出しており、CLI として実行されていないことが示唆されました。出力の max_execution_time は 30 でした。

コマンドラインから手動でスクリプトを実行する

php -q /tmp/phpinfo.php | less

PHP 情報をテキスト形式で書き出したところ、出力の max_execution_time は 0 でした。

どこかに設定の問題があるに違いないことはわかっていますが、どこに問題があるのか​​ わかりませんでした。これは、私が完全に制御できる運用サーバーで発生しています。開発マシンで cron から同じスクリプトを実行すると、問題なく動作しました。

違いのまとめはこちら

function             | CLI                     | cron                   |
php_sapi_name        | cli                     | cgi-fcgi               |
php_ini_loaded_file  | /usr/local/lib/php.ini  | /usr/local/lib/php.ini | 
4

1 に答える 1