2013-10-04 60 views
4

我最近切換到FastCGI的,現在我有設置PHP的一個問題,包括以前一直在.htaccess設置爲路徑:使用Apache配置指定PHP包括目錄爲每個站點

php_value include_path "[INCLUDE PATH]" 

由於開關,這給出了錯誤:

Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration

而且我的理解「php_value」無法通過FastCGI的htaccess的設置。

有什麼方法來解決這個問題,或者全局指定PHP包含了整個網站與子目錄的路徑,例如通過Apache配置?

我知道我可以在php的每個腳本中手動設置包含路徑,或者我可以在目錄中的php.ini中指定包含路徑,但網站已經建立了許多文件和目錄,它會是通過每個文件和目錄來複制新的包含路徑或php.ini文件非常麻煩。

回答

2

因爲只有PHP模塊支持php_valuephp_flag指令,所以您幾乎不走運。

你可以做的就是創建一個php.ini文件每個網站。從內存中,你將需要這是一個完整的php.ini文件,因爲新文件將完全覆蓋系統之一。

一個簡單的方法來做到這將是複製系統文件,然後添加自定義屬性,如

cp /usr/share/php5/php.ini /path/to/site/php.d/php.ini \ 
&& echo 'include_path = "[INCLUDE PATH]"' >> /path/to/site/php.d/php.ini 

然後,在該網站的.htaccess文件,設置PHPRC環境變量。這是爲了避免到php.ini文件添加到目錄。

SetEnv PHPRC /path/to/site/php.d 

理想的情況下,雖然,每個站點都應該照顧自己的include_path的代碼。這將使您的應用程序更加便攜。

set_include_path(implode(PATH_SEPARATOR, [ 
    '[INCLUDE_PATH'], 
    get_include_path() 
])); 
+0

那太好了,謝謝!但現在看來,這不通過的phpinfo識別新的php.ini()(我是否將它設置在通過SETENV的.htaccess)是否或者即使我將其包含在目錄中。它雖然與suPHP很好地工作。我目前正在使用suEXEC運行FastCGI - 有什麼特別的我需要做? – peter986532

+0

@ peter986532不好意思啊,我永遠只能通過suEXEC的做到了所以幫不了你 – Phil