【发布时间】:2013-10-31 11:50:02
【问题描述】:
当我显示 phpinfo(); 时,我看到两列:local value 和 master value。 Web 服务器什么时候选择local value,什么时候选择master value?
【问题讨论】:
当我显示 phpinfo(); 时,我看到两列:local value 和 master value。 Web 服务器什么时候选择local value,什么时候选择master value?
【问题讨论】:
master 是编译到 PHP 中的值,或者通过主要的 php.ini 指令设置。即 PHP 启动时生效的值,在它执行任何代码之前。
local 是在您调用phpinfo() 时当前有效的值。此本地值是通过ini_set() 调用、httpd.conf/.htaccess 中的php_value 指令等发生的任何覆盖的end结果。
例如,
php.ini: foo=bar
httpd.conf: php_value foo baz
.htaccess: php_value foo qux
ini_set: ini_set('foo', 'kittens');
.user.ini foo=bar # this file works conditionally see https://stackoverflow.com/a/32193087/1818723
鉴于此,master 的值为qux,local 的值为kittens。
【讨论】:
phpinfo() 报告)在此示例中确实是“bar”。正如答案的第一段所述(不确定为什么示例中的推理发生明显变化?)。在httpd.conf、.htaccess 或.user.ini 等设置PHP 配置值不会改变报告的“主值”,只会改变“本地值”。
master value qux 造成的混淆
“主值”(来自 php.ini)可以在 httpd.conf、.htaccess 或php_value 指令的其他 Apache 配置。
第一个是局部值,第二个是全局值。本地值覆盖全局值并在 PHP、HTACCESS 等中设置,而全局值在 php.ini 中设置。为了回答您的问题,使用第一个值。
【讨论】:
托管网站将首先检查.htaccess 或.user.ini 中的本地值。 (这些文件在您的本地网站文件夹中,也可以说是本地级别的配置文件。)
本地值覆盖主值,因此php 将首先检查本地值。
主值在php.ini(PHP 主配置文件)中设置。
在终端中运行以下命令找到正确的路径:
php -i | grep 'Configuration File'
或
php -i | grep php.ini
所以即使我们在php.ini 中设置主值,我们也需要检查.htaccess 或.user.ini 中的本地值。
这是.htaccess 与.user.ini 工作https://stackoverflow.com/a/32193087/1818723 时的解释
【讨论】: