怎样改变配置选项
以 Apache 模块方式运行
PHP
当以 Apache 的模块方式运行 PHP 时,也可以通过 Apache
的配置文件(例如
httpd.conf
)和
.htaccess
文件中的指令来修改 PHP 的配置选项(需要“AllowOverride Options”或“AllowOverride All”权限)。
在 PHP 4.0 中,有几个 Apache 指令可以允许在 Apache
的配置文件中修改 PHP 的配置。要得到哪些指令分别属于
PHP_INI_ALL
,
PHP_INI_PERDIR
或
PHP_INI_SYSTEM
的列表,请看
ini_set()
文档中的表格。
注:
在 PHP 3.0 中,也有和
php3.ini
中选项相对应的
Apache 指令,只不过加上前缀“php3_”。
-
php_value
name
value
-
设定指定指令的值。仅能用于
PHP_INI_ALL
和
PHP_INI_PERDIR
类型的指令。要清除上一个设定的值,将值设为
none
。
注:
不要用
php_value
来设定布尔值。应该用
php_flag
(见下面)来替代。
-
php_flag
name
on|off
-
用于设定布尔值类型的配置指令。仅能用于
PHP_INI_ALL
和
PHP_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_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
接口
不论
PHP
的接口是什么都可以在脚本执行过程中通过
ini_set()
来修改一些值。下表提供了指令可以在哪一级被设定/修改的概览。
表格 4-1. PHP_INI_* 常量的定义
|
常量 |
值 |
含义 |
|
PHP_INI_USER |
1 |
该项目可以在用户脚本中设定 |
|
PHP_INI_PERDIR |
2 |
该项目可以在
php.ini
,
.htaccess
或者
httpd.conf
中设定
|
|
PHP_INI_SYSTEM |
4 |
该项目可以在
php.ini
或
httpd.conf
中设定
|
|
PHP_INI_ALL |
7 |
该项目可以在任何地方设定 |
可以在
phpinfo()
的输出中查看配置选项的值。也可以用
ini_get()
或
get_cfg_var()
来单个访问配置指令的值。