以 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 auto_prepend_file none
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_value open_basedir 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 中使用。
其它 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() 来单个访问配置指令的值。
配置文件怎样改变配置选项 |