PHP cli 在 cron 執行時使用不同的 php.ini 文件

PHP cli 在 cron 執行時使用不同的 php.ini 文件

我的 CakePHP 控制台腳本在 cron 下執行時出現問題。它抱怨缺少 Mysql 連線等。

經過一番調查後,我發現 cron 運行的 php 使用與我在終端機中運行它時不同的 php.ini 檔案。

更奇怪的是,在終端機中,php不使用cli配置:

PHP 在終端機中運作:

設定檔(php.ini)路徑:/usr/local/lib
載入的設定檔:/usr/local/lib/php.ini
掃描其他 .ini 檔:(無)
解析的其他 .ini 檔:(無)

PHP 透過 cron 運行:

設定檔(php.ini)路徑:/etc/php5/cli
載入的設定檔:/etc/php5/cli/php.ini
掃描以下位置的其他 .ini 檔案:/etc/php5/cli/conf.d
解析的其他 .ini 檔案:/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 運行時有任何特殊之處。

答案1

我不確定這是否是標準行為,但您可以隨時添加

-c /usr/local/lib/php.ini 到使用自訂配置的命令。

答案2

由於設定不同,您可能沒有php在終端機和 cron 中使用相同的二進位PATH

輸入which php終端並將php二進位檔案的完整路徑放入 cron 腳本中。

答案3

我同意 Oliver 的觀點 - 你必須將 php 的完整路徑放入 cron 中。您也可以在 cron 檔案中包含 PATH 參數,但最好是 php 的絕對路徑。

相關內容