怎样改变配置选项

以 Apache 模块方式运行 PHP

当以 Apache 的模块方式运行 PHP 时,也可以通过 Apache 的配置文件(例如 httpd.conf)和 .htaccess 文件中的指令来修改 PHP 的配置选项。这样做需要“AllowOverride Options”或“AllowOverride All”权限。

在 PHP 4 和 PHP 5 中,有几个 Apache 指令可以允许在 Apache 的配置文件中修改 PHP 的配置。要得到哪些指令分别属于 PHP_INI_ALLPHP_INI_PERDIRPHP_INI_SYSTEM 的列表,请看 ini_set() 文档中的表格。

注: 在 PHP 3 中,也有和 php3.ini 中选项相对应的 Apache 指令,只不过加上前缀“php3_”。

php_value name value

设定指定指令的值。仅能用于 PHP_INI_ALLPHP_INI_PERDIR 类型的指令。要清除上一个设定的值,将值设为 none

注: 不要用 php_value 来设定布尔值。应该用 php_flag(见下面)来替代。

php_flag name on|off

用于设定布尔值类型的配置指令。仅能用于 PHP_INI_ALLPHP_INI_PERDIR 类型的指令。

php_admin_value name value

设定指定指令的值。不能用于 .htaccess 文件中。任何在 php_admin_value 中设定的值不能被 .htaccess 或者 virtualhost 中的指令覆盖。要清除上一个设定的值,将值设为 none

php_admin_flag name on|off

用于设定布尔值类型的配置指令。不能用于 .htaccess 文件中。任何在 php_admin_flag 中设定的值不能被 .htaccess 或者 virtualhost 中的指令覆盖。

例子 4-2. Apache 配置例子

<IfModule mod_php5.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php3.c>
  php3_include_path ".:/usr/local/lib/php"
  php3_safe_mode on
</IfModule>

注意

PHP 常量不存在于 PHP 之外。例如,在 httpd.conf 中可以使用 PHP 常量如 E_ALL 或者 E_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 常量不会被解析。

其它 PHP 接口

Regardless of how you run PHP, you can change certain values at runtime of your scripts through ini_set(). See the documentation on the ini_set() page for more information.

If you are interested in a complete list of configuration settings on your system with their current values, you can execute the phpinfo() function, and review the resulting page. You can also access the values of individual configuration directives at runtime using ini_get() or get_cfg_var().