Запуск php из cron не запускался как CLI
Я заметил эту проблему после запуска php-скрипта с запуска cron до тайм-аута, но это не было проблемой, когда он запускался вручную из командной строки. (PHP имеет max_execution_time = 0 для CLI по умолчанию)
Поэтому я попытался запустить простой 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 |