2012-07-06 138 views
0

設置

我已經安裝了nginx 1.2.2和PHP 5.4.4。我已經將nginx配置爲FastCGI。php的.user.ini與nginx和子目錄

nginx的配置片斷:

location ~ \.php$ { 
    root   E:/Websites/localhost; 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME E:/Websites/localhost/$fastcgi_script_name; 
    include  fastcgi_params; 
} 

我有很多相同的系統上運行的本地虛擬站點。爲了自定義每個需求,我在每個站點根文件夾中創建了.user.ini文件,根據PHP文檔,這些文件也適用於子文件夾。

請注意這是一個開發環境,而不是現場。所以我可以靈活地定製一些東西。

問題

當我從除非我沒有深入到一些子文件夾,它工作正常的瀏覽器訪問任何網站。看起來.user.ini在子目錄中不起作用 - 至少在我的配置中。

按照PHP文件(http://www.php.net/manual/en/configuration.file.per-user.php):

除了主php.ini文件,PHP掃描在每個 目錄INI文件,開始請求PHP文件的目錄, 工作它的方式到當前文檔根

SOS

有沒有人配置。用戶。 ini下的nginx - 請求你請幫我一把。

注:有人報告在2009年中的錯誤:https://bugs.php.net/bug.php?id=50374

更多信息(編輯)

的phpinfo()說(根以及在子文件夾):
*服務器API:CGI/FastCGI的
* user_ini.filename:.user.ini(本地以及主)

php_sapi_name()說:CG i-fcgi

這些值存在於根文件夾和子目錄的phpinfo()中。所以在PHPInfo()中沒有區別。

它正在運行爲 CGI

進一步確認/ FastCGI的是根文件夾從.user.ini但不是子文件夾取的配置。

// .user.ini 
auto_prepend_file = "E:\Websites\localhost\user.ini.php" 

// user.ini.php 
<?php 
printf('Hi from: %s', __FILE__); 
?> 

這實際上可能是一個錯誤,但有沒有人配置PHP以這種方式與nginx的,並沒有面臨的問題。在這種情況下請求分享版本號和平臺。

+0

看來它確實是一個錯誤。 – 2012-07-06 10:31:13

+0

是的Bruni它看起來仍然是2年前報告後的一個錯誤。但是我將我的希望放在了可能遇到同樣問題的nginx用戶身上。 – user1402647 2012-07-06 11:18:01

+0

這不是一個錯誤。看到我的帖子下面。 – Dayo 2012-07-07 06:26:33

回答

0

您只部分引用了您鏈接到的PHP文檔。它也說These files are processed only by the CGI/FastCGI SAPI

我懷疑你沒有使用CGI/FastCGI SAPI,但有一些其他的SAPI ... PHP-FPM SAPI也許?

正如你可能從上面得出的那樣,運行FastCGI並不等同於使用CGI/FastCGI SAPI。您也可以使用其他SAPI(如PHP-FPM)運行FastCGI。

BTW SAPI =服務器API。你可以在phpinfo文件中查找你的。

+0

不知道是否有一些配置錯誤,或只是一個錯誤。但** php_sapi_name()**返回** cgi-fcgi **並且此外它僅適用於根文件夾,但不適用於子目錄。 – user1402647 2012-07-09 05:27:35

+0

這個工作的SAPI被稱爲'CGI/FastCGI'。在phpinfo文件中查找精確的文件,而不是php_sapi_name()輸出。由於您很可能使用了php-fpm,因此您可以嘗試在鏈接文檔頁面上的hotmail dot com上使用showerheadsuk的說明。 – Dayo 2012-07-09 16:08:17

+0

BTW。請參閱:http://stackoverflow.com/questions/10965807/how-do-i-get-php-5-3-8-to-read-a-user-ini-file – Dayo 2012-07-09 16:11:20

0

這實際上是一個更大的問題,只是nginx,但一個永久的解決方案是可用的。添加指令選項的替代ini_set方法有很大的侷限性,所以它不是一個很好的長期解決方案。謝謝。 http://www.ait-pro.com/aitpro-blog/4349/misc-projects/wordpress-tips-tricks-fixes/php5-3-x-php5-4-x-user-ini-file-does-not-work-known-php5-3-x-user-ini-fastcgi-wordpress-zend-issue/

+0

您必須披露與外部網站的關係。 – 2012-10-04 21:09:11

+2

@BeauGrantham - 我查看了Stackoverflow的幫助和常見問題,但沒有找到任何關於「透露與外部網站的聯繫」的幫助信息。你能澄清一下這個規則到底是什麼嗎?謝謝。 – 2013-10-19 00:29:00