nginx+php 出現404錯誤解決方案

來源:互聯網
上載者:User

錯誤記錄檔

裝好 nginx-1.0.5 與 php-5.3.6(php-fpm) 迫不及待的測試 info.php(<?php phpinfo(); ?>),但是只返回了空白頁,什麼也沒有輸出,以下是錯誤記錄檔。


192.168.6.82 - - [01/Aug/2011:13:54:20 +0800] "GET /info.php HTTP/1.1" 404 5 "-" "Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.9) Gecko/20100827 Red Hat/3.6.9-2.el6 Firefox/3.6.9"


192.168.6.82 - - [01/Aug/2011:14:57:30 +0800] "HEAD /info.php HTTP/1.1" 404 0 "-" "curl/7.19.7(x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.12.6.2 zlib/1.2.3 libidn/1.18 libssh2/1.2.2"


192.168.6.82 - - [01/Aug/2011:13:58:57 +0800] "GET /index.html HTTP/1.1" 200 151 "-" "Mozilla/5.0(X11; U; Linux x86_64; zh-CN; rv:1.9.2.9) Gecko/20100827 Red Hat/3.6.9-2.el6 Firefox/3.6.9"


分析

1 使用firefox 瀏覽 http://192.168.5.87/info.php 測試頁返回空白頁,什麼都沒有。


2 使用curl 測試 http://192.168.5.87/info.php 測試頁提示404沒找到。

# curl -I http://192.168.5.87/info.php
HTTP/1.1 404 Not Found
Server: nginx/1.0.5
Date: Mon, 01 Aug 2011 06:54:46 GMT
Content-Type: text/html
Connection: keep-alive
X-Powered-By: PHP/5.3.6


3 使用firefox 瀏覽 http://192.168.5.87/index.html

4 靜態頁面的index.html 是可以訪問的,而動態info.php確是404 找不到,為什麼會這樣那?index.html 檔案目錄是nginx預設安裝目錄 /usr/local/nginx/html,而

info.php 我把它放到了 /data/web 下 是不是這個原因 ?看下nginx.conf配置文檔

server {
listen 80;
server_name localhost;

location / {
index index.html index.htm;
root html;
}


error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;

}

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


過程

嘗試更改下

location ~ \.php$ {
root /data/web;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}

nginx -t && nginx -s reload

測試訪問仍然不行

google

再次更改

location ~ \.php$ {
root /data/web;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/web$fastcgi_script_name;
include fastcgi_params;
}

nginx -t && nginx -s reload

測試一下

[root@me zongm]# curl -I http://192.168.5.87/info.php
HTTP/1.1 200 OK
Server: nginx/1.0.5
Date: Mon, 01 Aug 2011 08:34:17 GMT
Content-Type: text/html
Connection: keep-alive
X-Powered-By: PHP/5.3.6

firefox 測試ok!


總結

問題還是在配置文檔上,估計不少朋友會遇到php 輸出空白頁什麼也不顯示,

主要是nginx 的 root 指令 或者 fastcgi_param 指令 配置出了問題詳細的文檔請參考這裡!

再看下nginx.conf配置文檔,

server{
location / {
index index.html index.htm;
root html;
}

location = /50x.html {
root html

}

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

1 發現除了location ~ \.php$以外,每個location 下都有個root 指令用於載入web檔案根目錄,預設都是 /usr/local/nginx/html,第一個錯誤是沒有在 location ~ \.php$ 添加web檔案根目錄

root /data/web;

或者在server 欄位下加入一個 root 例如

server {

.........

root /data/web;

.........

}


2 參考這裡知道了 PHP使用fastcgi_param 指令的 SCRIPT_FILENAME參數決定需要執行哪個指令碼,所以這個位置也要改成

fastcgi_param SCRIPT_FILENAME /data/web$fastcgi_script_name;


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.