PHP cli использует другой файл php.ini при запуске cron

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.

решение1

Я не уверен, является ли это стандартным поведением или нет, но вы всегда можете добавить

-c /usr/local/lib/php.ini к команде для использования пользовательской конфигурации.

решение2

Возможно, вы используете не один и тот же phpдвоичный файл в терминале и в cron из-за разных PATHнастроек.

Войдите which phpв терминал и введите полный путь к phpисполняемому файлу в вашем скрипте cron.

решение3

Я согласен с Оливером - нужно указать полный путь к php в cron. Вы также можете включить параметр PATH в файл cron, но, вероятно, лучше указать абсолютный путь к php.

Связанный контент