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
一切都應該正常工作。