nginx + PHP-FPM = nginx 로그의“권한이 거부되었습니다”오류 13; 구성 실수?


20

하나의 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"

Barebones 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;
        }
    }

(추가 재 작성 지시문은 워드 프레스 멀티 사이트, 즉 워드 프레스 MU를 사용하기위한 것입니다)

또한 사용자 www-data가 nginx.conf뿐만 아니라 사용자 및 그룹 값에 대한 php-fpm.conf에도 선언되어 있음을 확인했습니다.

어쩌면 13 오류 메시지의 원인을 이해하지 못합니까? 이상하게도 첫 번째 서버에서 dev.noisepages.com을 두 개의 다른 가상 호스트와 병렬로 설정하려고 시도했습니다. 각 가상 호스트는 정상적으로 작동하지만 동일한 오류가 발생했습니다.

답변:


57

당신은 당신이 확인해야합니다 +x있는 모든 사이트의 루트에 이르는 경로에있는 디렉토리 - 그래서 /home, /home/noisepages/home/noisepages/www


2
예, 사실 www는 올바른 권한을 가졌지 만 전체 경로는 아닙니다! 감사! 내 말은 멍청한 실수입니다.
Peter Kirn

1
내가 당신에게 또 다른 10 개의 투표를 줄 수 있다면
Tim

당신은 정말 멋지다! 답을 찾기 위해 Google에서 2 시간을 보냅니다! 고맙습니다!
Serhii Polishchuk

정말 고마워! 프로덕션 서버에 엉망이었고 이런 일이 발생했을 때 차가운 땀을 흘 렸습니다 ...!
lephleg

5

/ home / dev에 올바른 권한이 있는지 확인하십시오

chmod +x /home/dev

2

php-fpm의 권한, 특히 PHP 세션의 권한에 문제가있었습니다. 기본적으로 "nobody"사용자로 설정되었으므로 php-fpm이 프로세스를 실행하는 데 사용하는 사용자를 수정해야한다는 것이 밝혀졌습니다.

여기에 튜토리얼 : http://www.duchnik.com/tutorials/setting-up-php-with-nginx/


3
이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
Scott Pack

3
링크는 죽었다.
Christoph Bühler

1

나는 비슷한 문제가있어서 나를 여기에 데려 갔다. 내 솔루션 (선택된 답변을 기반으로)은

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

이제는 잘 작동합니다 :)


그러나 Chroot 사용자를 사용하면 어떻게 할 수 있습니까? chroot 사용자를 사용하는 경우 / home / user / www 폴더는 사용자가 소유해야하며 작동하지 않습니다.
Vincent LITUR

죄송합니다, 나는 :( 모른다
스콧 워렌에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.