配置安裝好NGINX PHP 等WEB服務,剛開始執行PHP的時候會變成下載:這是因爲nginx沒有設置好無法把PHP傳遞到後方的php-fpm解釋器。目錄安裝不一樣,可能都會有不同。
看看你的nginx.conf或自定義虛擬主機配置,裏面有沒有這樣的設置:
location ~ .*\.php$ {
fastcgi_pass 127.0.0.1:9000;
}
把PHP傳遞給後方127.0.0.1的9000端口上。
當然啦,你的php-fpm解析器也需要正常運行,並監聽好9000端口,才能最終生效並有效處理php腳本。不然解析PHP會變成502 bad gateway 錯誤。解決如下:
修改php-fpm的配置文件 /etc/php-fpm.conf 裏面的 listen = /tmp/php-fcgi.sock 改爲 listen = 127.0.0.1:9000,nginx和php配置必須統一。雖然502錯誤解決了,雖然會返回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;
或者直接在虛擬主機配置或nginx.conf配置增加這兩項;爲了顯示美觀,可用僞靜態隱藏PHP後綴,只要配置加上一句:
location / {
try_files $uri $uri/ $uri.php?$args;
}
完整主機配置如下:
server { listen 80;
server_name default;
root /home/www/;
location / {
try_files $uri $uri/ $uri.php?$args;
root html/blog;
index index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
完美解決。