在 Windows 上使用 nginx 和 php-cgi 时出现上述错误。这是我的 nginx 配置:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80 default;
server_name localhost;
charset utf-8;
root ..\www;
index index.php index.html index.htm;
error_page 500 502 503 504 /50x.html;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
root ..\www;
try_files $uri =404;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
}
}
}
有人看出其中有什么问题吗?
编辑:这是一个请求日志。
127.0.0.1 - - [30/Apr/2012:00:04:35 +0100] "GET /hi.php HTTP/1.1" 404 36 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120428 Firefox/15.0a1"
答案1
配置文件中的路径必须使用正斜杠以 UNIX 样式指定:
access_log logs/site.log; root C:/web/html;
答案2
尝试在根指令中使用正斜杠/
而不是反斜杠。\
此外,我认为你不需要在你的location ~ \.php$ {
块中使用根指令。
答案3
错误文件中没有任何记录。我刚刚尝试了您的建议,现在我得到了一个 nginx 404 页面。
- 从“location ~ .php$ { }”中删除“try_files $uri =404;”。
- 在“location / {}”中添加“root c:/nginx/www;”(或正确路径)。
- “if (!-e $request_filename) {}” 更好地替代try_files。