Meu script do console CakePHP está tendo problemas para executar no cron. Ele reclama de falta de conexões Mysql e coisas assim.
Depois de investigar um pouco, descobri que o php executado pelo cron usa um arquivo php.ini diferente de quando eu o executo no terminal.
O que é ainda mais estranho é que no terminal o php não usa a configuração cli:
PHP executado no terminal:
Arquivo de configuração (php.ini) Caminho: /usr/local/lib Arquivo de configuração carregado: /usr/local/lib/php.ini Procure arquivos .ini adicionais em: (nenhum) Arquivos .ini adicionais analisados: (nenhum)
PHP executado pelo cron:
Arquivo de configuração (php.ini) Caminho: /etc/php5/cli Arquivo de configuração carregado: /etc/php5/cli/php.ini Procure arquivos .ini adicionais em: /etc/php5/cli/conf.d Arquivos .ini adicionais analisados: /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
Não tenho ideia de por que não está usando os mesmos arquivos de configuração. Não percebo nada de especial nas ENV
variáveis do terminal ou quando executo como cron.
Responder1
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.
Responder2
Talvez você não esteja usando o mesmo php
binário no terminal e no cron, devido a uma PATH
configuração diferente.
Entre which php
no terminal e coloque o caminho completo para o php
binário em seu script cron.
Responder3
Concordo com o Oliver - você tem que colocar o caminho completo para o php no cron. Você também pode incluir um parâmetro PATH no arquivo cron, mas provavelmente é melhor incluir um caminho absoluto para php.