Назад | Перейти на главную страницу

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

Мой скрипт консоли CakePHP не запускается под cron. Он жалуется на отсутствие соединений Mysql и тому подобное.

После небольшого исследования я обнаружил, что php, запускаемый cron, использует другой файл php.ini по сравнению с тем, когда я запускаю его в терминале.

Что еще более странно, так это то, что в терминале php не использует конфигурацию cli:

PHP запускается в терминале:

Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File:         /usr/local/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

PHP под управлением cron:

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /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.

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

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

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

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

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