PHP cli usa un archivo php.ini diferente cuando se ejecuta mediante cron

PHP cli usa un archivo php.ini diferente cuando se ejecuta mediante cron

El script de mi consola CakePHP tiene problemas al ejecutarse en cron. Se queja de que faltan conexiones Mysql y demás.

Después de investigar un poco, descubrí que php ejecutado por cron usa un archivo php.ini diferente en comparación con cuando lo ejecuto en la terminal.

Lo que es aún más extraño es que en la terminal, php no usa la configuración cli:

PHP ejecutado en la terminal:

Archivo de configuración (php.ini) Ruta: /usr/local/lib
Archivo de configuración cargado: /usr/local/lib/php.ini
Busque archivos .ini adicionales en: (ninguno)
Archivos .ini adicionales analizados: (ninguno)

PHP ejecutado por cron:

Archivo de configuración (php.ini) Ruta: /etc/php5/cli
Archivo de configuración cargado: /etc/php5/cli/php.ini
Busque archivos .ini adicionales en: /etc/php5/cli/conf.d
Archivos .ini adicionales analizados: /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

No tengo idea de por qué no utiliza los mismos archivos de configuración. No noto nada especial en las ENVvariables en la terminal o cuando se ejecuta como cron.

Respuesta1

No estoy seguro de si este es un comportamiento estándar o no, pero siempre puedes agregar

-c /usr/local/lib/php.ini al comando para usar una configuración personalizada.

Respuesta2

Quizás no estés usando el mismo phpbinario en la terminal y en cron, debido a una PATHconfiguración diferente.

Ingrese which phpa la terminal y coloque la ruta completa al phpbinario en su script cron.

Respuesta3

Estoy de acuerdo con Oliver: debes poner la ruta completa a php en cron. También puede incluir un parámetro PATH en el archivo cron, pero probablemente sea mejor utilizar una ruta absoluta a php.

información relacionada