2个php.ini文件

24
我发现:
当我在终端中键入以下内容时:
php -i | grep php.ini

我得到的输出是:

加载的配置文件为@ /etc/php5/cli/php.ini

然而,从 phpinfo() 中,我看到:

加载的ini文件为@ /etc/php5/apache2/php.ini

这两个文件哪一个正在起作用?如何可能有两个 php.ini 文件?


服务器上的路径可能与浏览器中显示的路径不同。 - Grumpy
1个回答

41

根据 PHP 运行的位置不同,其使用的配置文件也会有所不同。如果通过命令行运行 PHP,则使用 cli/php.ini 配置文件;如果通过 Apache 环境运行,则使用 apache2/php.ini 配置文件。

由于您是通过浏览器执行 phpinfo() 函数,因此应答为 /etc/php5/apache2/php.ini。而在终端中执行 php -r "phpinfo();" | grep "Loaded Configuration" 应当输出 CLI 的 ini 配置文件路径。同一个函数在不同上下文环境下作用的方式也不同。

这种系统的优势显而易见,可以根据不同的环境进行不同的配置。例如,在 Apache 模式下可能需要开启 safe_mode,但在 CLI 模式下则不必。

实际上,您的 .ini 文件路径相对来说比较少见。通常情况下,PHP 标准配置文件为 php.ini,CLI 模式下的配置文件为 php-cli.ini,两者都位于同一文件夹下。

虽然我对此并不是专家,但这应该是基本的概念。如果有任何纠正意见,欢迎指出。


2
没错,你理解得很对。CLI和Apache使用不同的INI文件的基本想法是可以在单个系统上运行多个虚拟服务器。感谢你的回答。 - Hrishikesh Choudhari
4
“CLI和Apache使用不同的INI文件的基本想法是可以在单个系统上运行多个虚拟服务器。”这并不完全正确。PHP CLI版本的php.ini文件用于命令行PHP相关内容,而Apache模块的php.ini文件用于Apache PHP模块。两者是截然不同的事情。 - Giacomo1968

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接