24

我发现:

当我在终端上键入以下内容时:

php -i | grep php.ini

我得到输出:

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

但是,从phpinfo(),我看到:

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

其中哪一个现在正在工作?怎么可能有两个php.ini文件?

4

1 回答 1

40

取决于您从哪里运行 PHP。如果从命令行运行它,它在通过 apache 运行时使用cli/php.iniand 。apache2/php.ini

您正在phpinfo()通过浏览器执行,因此您得到/etc/php5/apache2/php.ini了答案。php -r "phpinfo();" | grep "Loaded Configuration"从终端运行应该会输出 CLI ini。相同的功能,上下文变化。

该系统的优点显然是允许根据上下文进行不同的配置。对于一个简化的示例,您可能希望safe_mode在 apache 中启用,但在 CLI 模式下没有必要。

你的.ini路径实际上很不寻常。通常,默认的 .ini 是 justphp.ini并且 CLI .ini 被调用php-cli.ini并且它们驻留在同一个文件夹中。

我不是这方面的专家,但这应该是基本思想。如果有人有任何更正,我会很高兴听到他们。

于 2010-10-06T11:03:34.047 回答