PHP cli использует другой файл php.ini при запуске cron
Мой консольный скрипт CakePHP имеет проблемы с выполнением под cron. Он жалуется на отсутствие Mysql-соединений и тому подобное.
После небольшого исследования я обнаружил, что php, запускаемый cron, использует другой файл php.ini по сравнению с тем, когда я запускаю его в терминале.
Еще более странным является то, что в терминале php не использует конфигурацию cli:
PHP запускается в терминале:
Файл конфигурации (php.ini) Путь: /usr/local/lib Загруженный файл конфигурации: /usr/local/lib/php.ini Сканирование дополнительных файлов.ini в: (нет) Проанализированы дополнительные файлы.ini: (нет)
PHP запускается cron:
Путь к файлу конфигурации (php.ini): /etc/php5/cli Загруженный файл конфигурации: /etc/php5/cli/php.ini Сканируйте дополнительные файлы.ini в: /etc/php5/cli/conf.d Проанализированы дополнительные файлы.ini: /etc/php5/cli/conf.d/memcache.ini, /etc/php5/cli/conf.d/mysql.ini, /etc/php5/cli/conf.d/mysqli.ini, /etc/php5/cli/conf.d/pdo.ini, /etc/php5/cli/conf.d/pdo_mysql.ini, /etc/php5/cli/conf.d/suhosin.ini, /etc/php5/cli/conf.d/xcache.ini
Я понятия не имею, почему он не использует те же файлы конфигурации. Я не замечаю ничего особенного в ENV
переменные в терминале или при запуске как cron.
3 ответа
Вы, возможно, не используете то же самое php
бинарный в терминале и в cron, из-за другого PATH
установка.
Войти which php
в терминале и положить полный путь к php
бинарный в вашем скрипте cron.
Я не уверен, является ли это стандартным поведением или нет, но вы всегда можете добавить
-c /usr/local/lib/php.ini
к команде использовать пользовательский конфиг.
Я согласен с Оливером - вы должны указать полный путь к php в cron. Вы также можете включить параметр PATH в файл cron, но, вероятно, лучше всего использовать абсолютный путь к php.