1. 程式人生 > >nginx+php-fpm配置後頁面顯示空白的解決方法以及用nginx和php-fpm解決“502 Bad Gateway”問題

nginx+php-fpm配置後頁面顯示空白的解決方法以及用nginx和php-fpm解決“502 Bad Gateway”問題

https://stackoverflow.com/questions/15423500/nginx-showing-blank-php-pages

For reference, I am attaching my location block for catching files with the .php extension:

location ~ \.php$ {
    include /path/to/fastcgi_params;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}

Double-check the /path/to/fastcgi-params, and make sure that it is present and readable by the nginx user.

 

由於nginx與php-fpm之間的一個小bug,會導致這樣的現象: 網站中的靜態頁面 *.html 都能正常訪問,而 *.php 檔案雖然會返回200狀態碼, 但實際輸出給瀏覽器的頁面內容卻是空白。 簡而言之,原因是nginx無法正確的將 *.php 檔案的地址傳遞給php-fpm去解析, 相當於php-fpm接受到了請求,但這請求卻指向一個不存在的檔案,於是返回空結果。 為了解決這個問題,需要改動nginx預設的fastcgiparams配置檔案: vi /etc/nginx/fastcgi_params 在檔案的最後增加兩行: 


fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO                $fastcgi_script_name;


然後重啟一下服務:


service php5-fpm reload service nginx reload            //重新載入各項配置改動。
 

 

 

https://wildlyinaccurate.com/solving-502-bad-gateway-with-nginx-php-fpm/

升級php-fpm後,我的基於PHP的站點返回“502 Bad Gateway”錯誤。當php5-fpm軟體包重新配置自己以偵聽不同的套接字時,就會發生這種情況。這是你如何解決它。

檢查以確保php-fpm正在執行  ps aux | grep php- 如果你在輸出中看不到任何php-fpm程序,那麼你可能需要重新安裝php-fpm。如果php-fpm執行正常,那麼跳過第一步。

sudo apt-get remove php5 php5-cgi php5-fpm sudo apt-get install php5 php5-cgi php5-fpm 

這裡需要注意的是,安裝軟體包的順序很重要。在過去,我發現以錯誤的順序安裝它們會導致包配置錯誤。

接下來,獲取php-fpm以偵聽正確的主機/埠。在/etc/php5/fpm/pool.d/www.conf變化的listen值以匹配fastcgi_pass您的Nginx的配置位置。例如,我改變了我的意見:

listen = /var/run/php5-fpm.sock 

至:

listen = 127.0.0.1:9000 

如果您正在配置php-fpm以偵聽Unix套接字,則還應檢查套接字檔案是否具有正確的所有者和許可權。雖然我不推薦它,但您可以簡單地為所有人提供讀寫許可權sudo chmod go+rw /var/run/php5-fpm.sock

重啟php-fpm,sudo service php5-fpm restart一切都應該正常工作。