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

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

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

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

 

因爲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;php-fpm


而後重啓一下服務:網站


service php5-fpm reload service nginx reload            //從新加載各項配置改動。
 spa

 

 

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

升級php-fpm後,個人基於PHP的站點返回「502 Bad Gateway」錯誤。當php5-fpm軟件包從新配置本身以偵聽不一樣的套接字時,就會發生這種狀況。這是你如何解決它。code

檢查以確保php-fpm正在運行  ps aux | grep php- 若是你在輸出中看不到任何php-fpm進程,那麼你可能須要從新安裝php-fpm。若是php-fpm運行正常,那麼跳過第一步。htm

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

相關文章
相關標籤/搜索