2014-11-05 111 views
0

我需要將enable_post_data_reading設置爲關閉,才能使網站上的一組特定路徑處於關閉狀態,並且無法使其工作。情況如下:在虛擬主機中設置的php_flag被忽略

的Apache 2.2.22,PHP 5.4.34

試圖在指令用來設置該標誌。

使用URL重寫(這是一個Drupal站點),所以每個目錄的htaccess文件將不起作用。

如果我在php.ini中將enable_post_data_reading設置爲「off」,則發佈數據將按預期處理,並且特定頁面可以工作,但會打破網站的其餘部分。但是,我至少向我證明了這個設置完全可行。

如果我在指令中設置了一個測試環境變量,它在預期的頁面上是可見的,所以它是正確匹配的。

但是,如果我在該指令中將enable_post_data_reading設置爲「off」,它將被忽略。

同樣,如果我在php.ini中將其設置爲「on」,然後在虛擬主機中將其設置爲「off」,它將保持打開狀態。

這樣看來,雖然這種結構正常工作:

<VirtualHost 192.169.0.1:80> 
    # Virtual host name, docroot, etc. 

    <Location /apply/> 
     SetEnv foo bar 
    </Location> 
</VirtualHost> 

...如果我這樣做:

<VirtualHost 192.169.0.1:80> 
    # Virtual host name, docroot, etc. 

    <Location /apply/> 
     php_flag enable_post_data_reading on 
    </Location> 
</VirtualHost> 

的指令的php_flag被忽略。

那麼,我做錯了什麼?有沒有其他的地方可以設置會起作用的旗幟?

在此先感謝...

回答

1

OK,所以我們做測試的大量。看起來,當URL被重寫時,Location指令不能正常工作,所以PHP標誌沒有被設置。

我們已經發現但一個變通:

  • 設置虛擬主機的位置指令觸發的文件(例如/apply.php)代替路徑。
  • 在頂層web目錄中創建一個符號鏈接到index.php,並使用您用於位置的任何名稱。
  • 在將所有內容重定向到index.php的標準Drupal規則之前,在.htaccess文件中添加一個新的rewriteRule,以便將需要受PHP標誌影響的路徑的所有內容都重寫爲符號鏈接。

這似乎是正確的,因爲我們需要它:設置PHP標誌,並且Drupal正常處理請求。相反,它比任何其他可能的解決方案都要好。