对于具有多个虚拟主机的 Apache2 用户的重要信息。
似乎 php_flag 指令在 Apache 2 下的行为与在 1.3 下的行为不同,当在 <VirtualHost> 块中使用时。
如果您使用 php_flag 覆盖一个虚拟主机的全局 php.ini 设置,那么其他未定制的虚拟主机也可能使用此覆盖设置。php_flag 记录在单个 Apache 2 服务器上的不同虚拟主机之间是混乱的。这可能是由于 Apache 2 多线程特性导致的。
以下是一个示例
假设您有两个虚拟主机:V1 和 V2。
对于 Apache 配置中的 V1,您使用
php_flag magic_quotes_gpc 1
V2 应该使用全局 php.ini 设置,因此您没有将任何 php_flag 记录放入 Apache 配置文件中的 V2(这在 Apache 1.3 下有效)。
而您的默认 php.ini 设置是
php_flag magic_quotes_gpc 0
当您运行服务器时,您会注意到 magic quotes 在 V2 上(有时)被设置为 On!
当对 V1 有先前的请求时,V2 上的值将变为 On。
要解决此问题,要么将 php_flag 移到位于自定义虚拟主机目录中的 .htaccess 文件中,要么将具有默认设置的 php_flag 放入所有未定制的 <VirtualHost> 块中。因此,对于 V2,请放入
php_flag magic_quotes_gpc 0
请务必非常小心使用 php_flag engine 0。
我的配置是
PHP 4.3.4、Apache 2.0.50、Linux RedHat 9