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.

Другие вопросы по тегам