PHP-CLI verwendet eine andere php.ini-Datei, wenn es von Cron ausgeführt wird

PHP-CLI verwendet eine andere php.ini-Datei, wenn es von Cron ausgeführt wird

Mein CakePHP-Konsolenskript hat Probleme bei der Ausführung unter Cron. Es beschwert sich über fehlende Mysql-Verbindungen und dergleichen.

Nach einigen Nachforschungen habe ich festgestellt, dass PHP, wenn es per Cron ausgeführt wird, eine andere php.ini-Datei verwendet, als wenn ich es im Terminal ausführe.

Noch merkwürdiger ist, dass PHP im Terminal die CLI-Konfiguration nicht verwendet:

PHP im Terminal ausführen:

Pfad der Konfigurationsdatei (php.ini): /usr/local/lib
Geladene Konfigurationsdatei: /usr/local/lib/php.ini
Nach weiteren INI-Dateien suchen in: (keine)
Zusätzlich analysierte INI-Dateien: (keine)

PHP per Cron ausgeführt:

Pfad der Konfigurationsdatei (php.ini): /etc/php5/cli
Geladene Konfigurationsdatei: /etc/php5/cli/php.ini
Suchen Sie nach zusätzlichen INI-Dateien in: /etc/php5/cli/conf.d
Zusätzliche analysierte INI-Dateien: /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

Ich habe keine Ahnung, warum nicht dieselben Konfigurationsdateien verwendet werden. Ich kann an den ENVVariablen im Terminal oder beim Ausführen als Cron nichts Besonderes erkennen.

Antwort1

Ich bin nicht sicher, ob das Standardverhalten ist oder nicht, aber Sie können immer hinzufügen

-c /usr/local/lib/php.ini zum Befehl, eine benutzerdefinierte Konfiguration zu verwenden.

Antwort2

phpMöglicherweise verwenden Sie aufgrund unterschiedlicher Einstellungen im Terminal und in Cron nicht dieselbe Binärdatei PATH.

Geben Sie which phpdas Terminal ein und geben Sie den vollständigen Pfad zur phpBinärdatei in Ihr Cron-Skript ein.

Antwort3

Ich stimme Oliver zu – Sie müssen den vollständigen Pfad zu PHP in Cron eingeben. Sie können auch einen PATH-Parameter in die Cron-Datei aufnehmen, aber am besten ist wahrscheinlich ein absoluter Pfad zu PHP.

verwandte Informationen