编程

PHP 8.5: CLI: php --ini=diff 输出非默认 INI 指令

22 2025-07-18 02:46:00

PHP8.5 中的 PHP CLI 可执行文件支持一个新的 php -ini=diff 命令行标志,该标志列出了与内置默认值不同的 ini 指令。

这提供了一种快速识别更改的 INI 值的方法,在应包含可能导致问题的潜在 INI 设置的错误报告中特别有用。

PHP 继续支持 php --ini CLI 选项,该选项列出了有关加载的 ini 文件的信息。

调用 php --help 显示新功能的帮助文本:

php --help
Usage: php [options] [-f] <file> [--] [args...]
   php [options] -r <code> [--] [args...]

 ...

  --ini            Show configuration file names
  --ini=diff       Show INI entries that differ from the built-in default

...

新增 php --ini=diff CLI 标志

使用 --ini=diff 选项调用 PHP 8.5 及更高版本的 php 可执行文件会打印所有与内置默认值不同的 INI 指令。

php --ini=diff
Non-default INI settings:
html_errors: "1" -> "0"
implicit_flush: "0" -> "1"
max_execution_time: "30" -> "0"

请注意,没有以机器友好的格式获取这些条目的选项,是因为这主要是用于排除故障。

与其他配置选项一起使用 --ini=diff

PHP CLI 提供了一些 CLI 选项来调整 PHP INI 指令。

  • php -n: 不使用配置文件(ini)
  • php -c example.ini: 在指定的目录中寻找 php.ini 或者使用指定的 INI 文件
  • php -d foo=bar: 直接设置配置项

新增的 --ini=diff 选项与上述所有其他的 INI 相关的 CLI 选项都能很好地配合使用

比如,如果 date.timezone INI 指令使用 -d CLI 选项传入,这一改变反应在 --ini=diff 输出中:

php -d date.timezone="Europe/Amsterdam" --ini=diff
Non-default INI settings:
date.timezone: "UTC" -> "Europe/Amsterdam"
html_errors: "1" -> "0"
implicit_flush: "0" -> "1"
max_execution_time: "30" -> "0"

向后兼容性影响

php --ini=diff PHP 8.5 中新增的 CLI 选项,它不会导致任何向后兼容性问题。

在旧版本的 PHP CLI 中调用 php --ini=diff 不会导致任何错误,不过其输出会与  php --ini 相同