php.ini 部分列表

此列表包含您可以设置的 php.ini 部分,以在每个主机或路径的基础上配置您的 PHP 设置。这些部分是可选的。

这些部分不会直接影响 PHP。它们用于将其他 php.ini 指令分组在一起,并使它们对特定主机或特定路径起作用。

这些部分仅在 CGI/FastCGI 模式下使用,并且不能设置 extensionzend_extension 指令。

部分
名称 可更改 变更日志
[HOST=] INI_SYSTEM  
[PATH=] INI_SYSTEM  

以下是配置指令的简短说明。

[HOST=<host>]

此部分允许您定义一组将在指定主机上生效的 php.ini 指令。

示例 #1 为 dev. 域激活全屏错误报告

[HOST=dev.site.com]
error_reporting = E_ALL
display_errors = On

[PATH=<path>]

此部分允许您定义一组将在脚本从指定路径运行时生效的 php.ini 指令。

示例 #2 为受保护区域添加安全脚本

[PATH=/home/site/public/secure]
auto_prepend_file=security.php

添加备注

用户贡献的备注 8 个备注

7
public at grik dot net
14 年前
在 [HOST=...] 中,应该只使用服务器名称列表中的第一个服务器名称。

例如,如果您有
server_name example.com, example2.com;
并且将在浏览器中使用 www.example.com,
在 php.ini 中为这两个地址使用 [HOST=example.com]。

PHP 不会查看 HOST 请求头(正如我所预期的那样),而是查看 SERVER_NAME 参数(默认情况下是名称列表中的第一个,无论 HOST 是什么)。
2
robinhook at mail dot com
6 年前
这些 HOST 和 PATH 部分似乎在 Apache 2.4 下的 php.ini 中不适用于 php-fpm 7.1.16 的指令 php_value 或 php_admin_value open_basedir 或 include_path。
phpinfo() 在主值和本地值中显示“无”。
1
robinhook at mail dot com
6 年前
对备注表示歉意。我读了一些错误的教程。
正确的语法是:directive = 'value'
而不是像这样:php_value[directive] = "somevalue"
1
crash at lubyte dot de
13 年前
如果您有一个系统,它使用单独的 PHP ini 文件来加载扩展(Debian、Fedora 和大多数其他发行版都是这样做的),[PATH=] 或 [HOST=] 将阻止加载那些 ini 文件中定义的扩展(extension= 和 zend_extension=)。

我在将 hosts.ini 添加到 /etc/php5/cgi/conf.d(Debian 的默认值)时遇到了一些麻烦,我想在那里为一个主机名定义一些默认值。手册说 extension= 和 zend_extension= 不允许在 [HOST=] 和 [PATH=] 中(见上文)。我发现你可以通过在定义之后添加 [PHP] 来轻松解决这个问题。

例如 hosts.ini
[HOST=dev.example.com]
display_errors = on

[PHP]

这将把部分改回 [PHP],允许使用 extension= 和 zend_extension=。
1
leo
13 年前
刚刚开发了可能是第一个 php.ini 技巧,用于添加在使用 mod_php 时,在 PHP 5.3 之前才会解析的命令。

<?php

# 默认情况下禁用 eAccelerator
eaccelerator.enable = 0

# 现在,为了防止与 Zend Optimizer+ 不兼容,我们
# 只想在 PHP 5.2 或更低版本中启用 eAccelerator。
[HOST=*]
eaccelerator.enable = 1

?>

这里发生了什么?在 PHP 5.3 中,引入了 php.ini 部分来在每个主机基础上设置 PHP。

https://php.net/manual/en/ini.sections.php

这些部分仅在 CGI/FastCGI 模式下工作,但是使用 mod_php 时,PHP 5.2 和 PHP 5.3 中解析 php.ini 文件的方式似乎仍然有所不同:PHP 5.3 会忽略 [HOST=*] 行以下的所有内容,而 PHP 5.2 不会。

在上面的示例中,PHP 5.3 只会读取“eaccelerator.enable = 0”,然后在无效命令 [HOST=*] 处停止。但是,PHP 5.2 似乎忽略了无效命令,并解析了整个配置文件,最终得到“eaccelerator.enable = 1”。
0
dasloch at absatzen dot de
4 年前
请注意,您不能在 [PATH=](可能还有 [HOST=])部分中有效地设置 syslog.*,因为 syslogger 仅在每个 php-fpm 工作进程初始化一次,而不是每次请求都初始化一次。
-1
z dot himdi at bita dot nl
13 年前
在 Windows IIS 7 服务器上,我注意到 [PATH=] 没有被监听。但是 [HOST=] 正常工作。
-1
robert dot johnson at icap dot com
14 年前
添加 PATH= 仅适用于指定的路径,不包括子目录,您必须为每个子目录添加 PATH= 值。

此外,某些设置即使 phpinfo 识别并显示每个文件夹的值作为“本地”值,并将默认值显示为“主”值,也无效。

'fastcgi.impersonate' 始终使用主设置。
To Top