2013-07-21 100 views
10

我使用的是一個新的PHP5-FPM和Nginx的在Ubuntu 13.04安裝此配置:我的nginx + FastCGI配置下載PHP文件,而不是執行它們

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    root /usr/share/nginx/html; 
    index index.php index.html index.htm; 

    server_name localhost; 

    location/{ 
      try_files $uri $uri/ /index.html; 
    } 

    location /doc/ { 
      alias /usr/share/doc/; 
      autoindex on; 
      allow 127.0.0.1; 
      allow ::1; 
      deny all; 
    } 

    error_page 404 /404.html; 

    location ~ \.php$ { 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini 

      # With php5-cgi alone: 
      fastcgi_pass 127.0.0.1:9000; 
      # With php5-fpm: 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      include fastcgi_params; 
    } 
} 

但是,我的Web瀏覽器中看到的PHP作爲文本而不是執行結果。我應該在哪裏尋找疑難解答?

回答

8

您的php代碼直接顯示,因爲它沒有被髮送到php引擎,這意味着位置塊正在匹配和php文件正在服務,但PHP文件沒有被捕獲的PHP塊,所以你的問題是在PHP塊。

在那個塊中你有2個fastcgi_pass,一個帶有端口(9000),另一個帶有unix套接字,你不能把它們放在一起,但是因爲你用fastcgi標記了你的問題,所以我假設您正在使用fastcgi,請嘗試對此行發表評論

#fastcgi_pass unix:/var/run/php5-fpm.sock; 
+0

這是奇怪的。我能夠看到fastcgi正在運行,但無法使用任何一條線路來連接php輸出。我重新安裝了一切,並遵循本指南(http://askubuntu.com/questions/134666/what-is-the-easiest-way-to-enable-php-on-nginx),似乎一切正常。謝謝! – arby

2

聽起來好像您正在獲取錯誤的Content-Type標頭集。你可以用各種工具來檢查。例如,在Chrome中打開開發者工具「網絡」標籤,然後請求該頁面。您會看到其中一列中返回的「內容類型」,您可以單擊左列中的請求查看完整的Response標題。我懷疑你會發現返回的頭文件是「text/plain」或「application/octet-stream」而不是text/html,這可能是你想要的。

Nginx通常會根據擴展名設置默認的Content-Type標頭。這是通過types指令完成的,我沒有在上面看到,所以你可能希望在那裏檢查你的設置,以確認php擴展名映射到text/html。在應用程序中明確設置Content-Type標題也可能有所幫助。

0

我能夠通過更新我的nginx的虛擬主機通過改變

default_type application/octet-stream;

解決這個問題,以

default_type text/html;

相關問題