如何更改配置设置

以 Apache 模块形式运行 PHP

当使用 PHP 作为 Apache 模块时,您也可以使用 Apache 配置文件(例如 httpd.conf)和 .htaccess 文件中的指令来更改配置设置。您需要 "AllowOverride Options" 或 "AllowOverride All" 权限才能这样做。

有几个 Apache 指令允许您从 Apache 配置文件内部更改 PHP 配置。有关哪些指令是 INI_ALLINI_PERDIRINI_SYSTEM 的列表,请查看 php.ini 指令列表 附录。

php_value name value

设置指定指令的值。只能与 INI_ALLINI_PERDIR 类型指令一起使用。要清除之前设置的值,请使用 none 作为值。

注意: 不要使用 php_value 设置布尔值。应改为使用 php_flag(见下文)。

php_flag name on|off

用于设置布尔配置指令。只能与 INI_ALLINI_PERDIR 类型指令一起使用。

php_admin_value name value

设置指定指令的值。这不能.htaccess 文件中使用。使用 php_admin_value 设置的任何指令类型都不能被 .htaccessini_set() 覆盖。要清除之前设置的值,请使用 none 作为值。

php_admin_flag name on|off

用于设置布尔配置指令。这不能.htaccess 文件中使用。使用 php_admin_flag 设置的任何指令类型都不能被 .htaccessini_set() 覆盖。

示例 #1 Apache 配置示例

<IfModule mod_php5.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag engine on
</IfModule>
<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag engine on
</IfModule>

警告

PHP 常量在 PHP 外部不存在。例如,在 httpd.conf 中,您不能使用 PHP 常量,例如 E_ALLE_NOTICE 来设置 error_reporting 指令,因为它们没有意义并且将计算为0。请改用相关的位掩码值。这些常量可以在 php.ini 中使用

通过 Windows 注册表更改 PHP 配置

在 Windows 上运行 PHP 时,可以使用 Windows 注册表以每个目录为基础修改配置值。配置值存储在注册表项 HKLM\SOFTWARE\PHP\Per Directory Values 中,位于与路径名对应的子项中。例如,目录 c:\inetpub\wwwroot 的配置值将存储在项 HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot 中。目录的设置将对从该目录或其任何子目录运行的任何脚本生效。该项下的值应具有 PHP 配置指令的名称和字符串值。值中的 PHP 常量不会被解析。但是,只有可以通过 INI_USER 更改的配置值可以通过这种方式设置,INI_PERDIR 值不能,因为这些配置值会针对每个请求重新读取。

PHP 的其他接口

无论您如何运行 PHP,您都可以通过 ini_set() 在脚本的运行时更改某些值。有关更多信息,请参阅 ini_set() 页面上的文档。

如果您想查看系统上所有配置设置及其当前值的完整列表,您可以执行 phpinfo() 函数,并查看生成的页面。您还可以使用 ini_get()get_cfg_var() 在运行时访问各个配置指令的值。

添加注释

用户贡献注释 2 个注释

contrees.du.reve at gmail dot com
16 年前
能够将 php 指令放入 httpd.conf 中,并使其在每个目录或每个虚拟主机基础上起作用,真是太棒了。现在,还有另一个方面值得注意

将 php.ini 指令放入您的 apache conf 文件中,将适用于 php 作为 apache 模块运行时(即在网页中),但适用于 php 作为 CLI(命令行界面)运行时。

这种功能可能不受少数人欢迎,但我想大多数人会发现它很有用。就我而言,我真的很高兴能够在我的 httpd.conf 文件中使用 open_basedir,它限制了我的域的 Web 用户和子管理员的访问权限,但它限制我自己命令行 php 脚本的访问权限...
self at pabloviquez dot com
15 年前
请注意,通过 Windows 注册表更改 PHP 配置将使用 php_admin_value 设置新值。这使得您无法在运行时覆盖它们。

因此,例如,如果您在 Windows 注册表中设置 include_path,然后在应用程序中调用 set_include_path 函数,它将返回 false,并且不会更改 include_path。
To Top