提供給擁有數個虛擬主機的 Apache2 使用者的重要資訊。
當在 <VirtualHost> 區塊內使用 php_flag 指令時,它在 Apache 2 下的行為似乎與在 1.3 下不同。
如果您使用 php_flag 覆蓋其中一個虛擬主機的全局 php.ini 設定,那麼您的其他未自訂的虛擬主機也可能會使用這個覆蓋的設定。在單個 Apache 2 伺服器下,不同虛擬主機之間的 php_flag 記錄會混亂。這可能是由於 Apache 2 的多執行緒特性所導致。
以下是一個例子
假設您有兩個虛擬主機:V1 和 V2。
對於 Apache 設定中的 V1,您使用
php_flag magic_quotes_gpc 1
V2 應該使用全局 php.ini 設定,所以您沒有在 V2 的 Apache 設定中放入任何 php_flag 記錄(這在 Apache 1.3 下有效)。
而您的預設 php.ini 設定是
php_flag magic_quotes_gpc 0
當您執行伺服器時,您會注意到 V2 上的魔術引號(有時)被設定為開啟!
當先前有對 V1 的請求時,V2 上的值會變成開啟。
要解決這個問題,可以將 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