2010-03-23 49 views
10

我用下面的配置nginx的:http://gist.github.com/340956

然而,這樣的配置會導致No input file specified錯誤用PHP。我已經能夠解決這個問題的唯一方法是通過改變這一行:

fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

注意「/」 $document_root$fastcgi_script_name之間。我被告知這是錯誤的配置,但沒有人能夠準確地告訴我爲什麼我的配置需要額外的斜線。

我該如何擺脫額外的斜線?在管線

回答

4

就面臨着同樣的問題(在nginx的+一個RHEL6服務器上的PHP-FPM的雷米安裝),您可以通過添加解決它在/ etc/nginx的/ fastcgi_params

fastcgi_param SCRIPT_FILENAME $request_filename; 

以下行我發現這個線RHEL缺失,而存在於正常使用的Debian nginx的。

0

刪除try_files $uri index.php$uri; 3.

+0

然後我重寫了,因爲我有像'/ foo/bar'這樣的URL重定向到'index.php/foo/bar'。 – shadowhand 2010-03-24 08:03:59

0

偏好的問題。只要你一致,任何一種方式都可以。

要麼在配置文件中添加斜槓,並確保在文檔根目錄和腳本名稱的末尾和起始處沒有額外的斜槓,反之亦然。

+0

我不買它。無論我是否向$ root添加尾部斜線,似乎都沒有區別。 – shadowhand 2010-04-15 11:58:29

1

參數PATH_TRANSLATED是否得到正確的URI?我認爲這是不計算的conf文件中變量的直接連接。在它們之間添加斜線時,可能它們被正確解釋。

當您收到錯誤No input file specified時,請檢查您的日誌以查看請求的URI。

+0

當我得到'沒有輸入文件指定的錯誤時,我應該檢查什麼日誌? nginx日誌不會顯示任何內容,因爲錯誤是由PHP觸發的。 – shadowhand 2010-04-16 10:18:28

+0

我的'$ _SERVER'轉儲中沒有'PATH_TRANSLATED'。 – shadowhand 2010-04-16 10:24:38

+0

PHP錯誤日誌也顯示沒有錯誤。 – shadowhand 2010-04-16 10:35:01

0

會發生什麼,當你明確地添加根指令,像這樣:

location ~ \.php$ { 
    # fastcgi_split_path_info ^(.+\.php)(.*)$; 
    include fastcgi.conf; 

    root /var/www/my_webroot; 

    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
} 
+0

我的'$ root'在'server {...}中定義的是還不夠好? – shadowhand 2010-04-21 10:38:41