O PHP cli usa um arquivo php.ini diferente quando executado pelo cron

3

Meu script de console do CakePHP está tendo problemas para executar sob o cron. Ele reclama sobre a falta de conexões Mysql e tal.

Depois de um pouco de investigação descobri que php executado pelo cron usa um arquivo php.ini diferente comparado ao quando eu o executo no terminal.

O que é ainda mais estranho é que no terminal, o php não usa o cli config:

PHP executado no terminal:

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 executado pelo 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

Eu não tenho idéia porque não está usando os mesmos arquivos de configuração. Eu não noto nada de especial nas variáveis ENV no terminal ou quando executado como cron.

    
por skerit 19.12.2013 / 09:36

3 respostas

3

Não tenho certeza se esse é um comportamento padrão ou não, mas você sempre pode adicionar

-c /usr/local/lib/php.ini ao comando para usar uma configuração personalizada.

    
por 19.12.2013 / 09:40
3

Você talvez não esteja usando o mesmo php binário no terminal e no cron, por causa de uma configuração PATH diferente.

Digite which php no terminal e coloque o caminho completo para o binário php em seu script cron.

    
por 19.12.2013 / 09:58
0

Concordo com o Oliver - você tem que colocar o caminho completo para php no cron. Você também pode incluir um parâmetro PATH no arquivo cron, mas provavelmente o melhor para um caminho absoluto para o php.

    
por 19.12.2013 / 10:23