php.ini 不同于 php 信息(仅限 cli)

php.ini different from php info (cli only)

我写了一个脚本来从我们的服务器收集某些配置数据来比较不同的环境。为此,我使用 php -i 命令获得 PHP 设置。

我现在注意到 'php -i' 的输出显示的值与加载的 php.ini 文件中的值不同。

# /usr/local/zend/bin/php -c /usr/local/zend/etc/php.ini -i | grep -E -e 'Configuration File|max_exec'

Configuration File (php.ini) Path => /usr/local/zend/etc
Loaded Configuration File => /usr/local/zend/etc/php.ini
max_execution_time => 0 => 0

# cat /usr/local/zend/etc/php.ini | grep max_exec
max_execution_time=1200

请注意,这只是 php CLI,不涉及服务器。我验证了以下内容:

The docs 表示

When running PHP from the command line the default setting is 0.

我认为此设置在 CLI 中没有任何意义,并且未从 php.ini 中读取。

澄清一下:您仍然可以 ini_set 它并且 CLI 会相应地运行,它似乎没有从 php.ini 文件中读取。

您不能为 CLI 设置 max_execution_time。请参阅 the manual,在“覆盖 php.ini 指令”部分:

PHP in a shell environment tends to be used for a much more diverse range of purposes than typical Web-based scripts, and as these can be very long-running, the maximum execution time is set to unlimited.

换句话说,无论您在 php.ini 中为 max_execution_time 设置什么,CLI 都会将其覆盖为无限制。

如果您想限制脚本的执行时间,您可以在脚本本身中使用set_time_limit()函数。