无法在全新安装中设置 nginx + php5-fpm,出现 404

无法在全新安装中设置 nginx + php5-fpm,出现 404

我刚刚下载了 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 端口上监听的进程。有什么正在监听的吗?

相关内容