nginx + PHP-FPM = nginx 日志中的“权限被拒绝”错误 13;配置错误?

nginx + PHP-FPM = nginx 日志中的“权限被拒绝”错误 13;配置错误?

我在一台 RHEL5 服务器上的 PHP 5.2.10 下运行 nginx 0.7x + PHP-FPM,但尝试在第二台服务器上的 PHP 5.3.3 中捆绑的 PHP-FPM 下复制该设置时,每次有 GET 时都会遇到权限错误的问题。

FPM 已启动,并确认 fastcgi 正在监听 9000,但每次我执行 GET 时,都会在 nginx 日志中看到此错误:

2010/08/12 23:38:53 [crit] 5019#0: *5 stat() "/home/noisepages/www/" failed (13: Permission denied), client: 24.215.173.141, server: dev.noisepages.com, request: "GET / HTTP/1.1", host: "dev.noisepages.com"

至少,基本的 nginx.conf.default 可以正常工作。这是我的 nginx.conf

server {
        listen       80;
        server_name  dev.noisepages.com;
        root   /home/noisepages/www;
        index  index.html index.htm index.php;

        access_log  logs/dev.access.log;
 error_log logs/dev.error.log;

        location / {

 if (-f $request_filename) {
  expires 30d;
  break;
  }

 # this sends all non-existing file or directory requests to index.php
 rewrite ^.*/files/(.*) /wp-includes/ms-files.php?file=$1;
 if (!-e $request_filename) {
     rewrite ^.+?(/wp-.*) $1 last;
  rewrite ^.+?(/.*\.php)$ $1 last;
  rewrite ^ /index.php last;
  }
        }

        location ~ \.php$ {
            include        fastcgi_params;
            fastcgi_pass   unix:/dev/shm/php-fastcgi.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME    /home/dev/www/$fastcgi_script_name;
        }
    }

(额外的重写指令用于 WordPress 多站点,又称 WordPress MU)

我还验证了用户 www-data 不仅在 nginx.conf 中声明,而且在 php-fpm.conf 中也声明了用户和组值。

也许我不明白是什么导致了错误 13 消息?奇怪的是,我尝试在第一台服务器上并行设置 dev.noisepages.com 以及其他几个虚拟主机 - 每个都运行良好 - 并收到相同的错误。

答案1

你需要确保你+x全部指向网站根目录的路径中的目录 - so /home/home/noisepages/home/noisepages/www

答案2

确保 /home/dev 具有正确的权限

chmod +x /home/dev

答案3

我遇到了类似的问题,所以我来到这里。我的解决方案(基于所选答案)是

chown -R root:www-data /home/noisepages/www
chmod g+w -R /home/noisepages/www

现在一切正常:)

答案4

我在 php-fpm 中也遇到了权限问题,特别是 php 会话。结果发现我只需要修改 php-fpm 用于运行进程的用户,因为默认情况下它被设置为“nobody”用户。

这里有相关的教程:http://www.duchnik.com/tutorials/setting-up-php-with-nginx/

相关内容