我刚刚下载了 nginx 1.4,马上就看到“欢迎使用 nginx!”消息,然后我就安装了php5-fpm从存储库所以我创建了一个 php 文件
/usr/share/nginx/html/demo.php只在<?php echo "Hello World"; ?>
內部。
(我正在基于 ElementaryOS Ubuntu 12.04 下尝试)并遵循以下手册:http://wiki.nginx.org/PHPFcgiExample
然后当我访问它时http://localhost/demo.php
它不起作用,我给出一个 404 错误。这是我的/etc/nginx/conf.d/默认.conf文件:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
我以为这是一个权限问题,所以我只是改变了用户 nginx到用户 www 数据与 fpm 使用的用户相同(根据 conf 文件)。然后我申请了chown -R www-data:www-data /usr/share/nginx/html/
,但出现了同样的错误。
我正在寻找类似的问题,我读到:
root /usr/share/nginx/html;
index index.html index.htm;
它们需要位于服务器级别(而不是本地 /),如果我这样做,我会得到一个空白页,但没有其他内容。分析标题后,我得到了 200 Ok 响应。
如果我使用默认的 php snnipet 而不是手册中的那个:
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
我给出了 404 错误,但只是空白页,并显示消息“文件未找到”。呈现的页面与我之前收到的页面不同。我认为这个来自 fpm,另一个来自 nginx(当然……我不确定)。
最后我这样做了chmod 777 /usr/share/nginx/html/demo.php
,现在它下载脚本,将文件 demo.php 下载到我的电脑。
所以我想知道如何使用 nginx + php5-fpm 执行 PHP 脚本。我不介意删除和清除 nginx、fpm 或 php 包,我只想在 Web 服务器中执行 php 脚本。
提前致谢。祝您有美好的一天。
答案1
配置行:
fastcgi_pass 127.0.0.1:9000;
正在指示 nginx 将请求转发到在本地主机 9000 端口上监听的进程。有什么正在监听的吗?