2012-02-25 54 views
1

我正在嘗試使用PHP的內置函數get_browser()。我遵循this useful post中的說明,但我仍然收到錯誤在服務器上使用htaccess更改PHP.ini

browscap ini指令未設置。

我下載的文件php_browscap.ini並移動成相同的目錄中我的.htaccess文件,所以它的位置是家/主機名/子/ php_browscap.ini由於我沒有訪問我的php.ini文件,我想用.htaccess編輯browscap屬性。這是我輸入的內容:

php_value browscap home/hostname/subdomain/php_browscap.ini 

我不知道它的問題,但低於有一些重寫引擎代碼。

如前所述,我仍然收到上述錯誤。我做錯了什麼?

謝謝。

回答

3

做一個phpinfo()函數來了解你的PHP運行時的配置。如果您的系統配置爲「CGI/FastCGI」,那麼它可能運行suPHP作爲PHP啓動器。 在這種情況下,您可以指定您自己的php.ini文件。默認情況下,suPHP看起來腳本目錄,但您可以通過下面的指令在你的.htaccess文件覆蓋此:

suPHP_ConfigPath (expects a path name) 

這個選項告訴mod_suphp傳授其路徑PHP解釋器(通過設置PHPRC環境變量)。做指一個文件,但該目錄中的文件在抵抗

例如:如果你想使用「/path/to/server/config/php.ini」,用「suPHP_Config /路徑/到/服務器/配置」。

如果您不使用此選項,PHP將使用其編譯的默認路徑。 此外,您必須在browsercap指令中使用正確形成的路徑,例如

browscap="/home/hostname/subdomain/php_browscap.ini" 

(注龍頭/

附錄

我剛剛檢查和Dreamhost的共享主機方案採用suEXEC的。隨着suEXEC的你通常可以通過複製系統的php.ini覆蓋php.ini的補丁(phpinfo()函數告訴你在哪裏找到它)爲一體的民營目錄,說_private還有browsercap.ini然後加入

SetEnv PHPRC /home/hostname/_private 

到您的.htaccess文件。如果這不起作用,那麼問題是特定於Dreamhost的suEXEC配置,你需要問這個問題http://discussion.dreamhost.com/

0

這裏有兩個潛在的問題。

  1. 也許您的主機不允許您覆蓋.htaccess文件中的ini設置。
  2. 也許browscap不喜歡你提供的路徑。請嘗試:

    php_value browscap /home/hostname/subdomain/php_browscap.ini 
    

    並確保該文件的權限允許Web用戶讀取它。

+0

仍然是同樣的錯誤。我的主機是Dreamhost。 – LonelyWebCrawler 2012-02-25 13:05:48

+0

網絡用戶應該閱讀它?你是什​​麼意思? – LonelyWebCrawler 2012-02-25 13:07:14

+0

DreamHost在http://wiki.dreamhost.com/PHP.ini上有這個問題的文檔,web用戶是web服務器(例如Apache)運行的系統使用。在Debian上,這個用法是'www-data'。 – Treffynnon 2012-02-25 13:10:11