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 文件: (无)

由 cron 运行的 PHP:

配置文件(php.ini)路径:/etc/php5/cli
加载的配置文件:/etc/php5/cli/php.ini
扫描 /etc/php5/cli/conf.d 中的其他 .ini 文件
解析的其他 .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在终端中输入phpcron 脚本中的二进制文件的完整路径。

答案3

我同意 Oliver 的观点 - 您必须在 cron 中输入 php 的完整路径。您也可以在 cron 文件中包括 PATH 参数,但最好使用 php 的绝对路径。

相关内容