nginx + PHP-FPM = błąd 13 „odmowa uprawnień” w dzienniku nginx; błąd konfiguracji?

20

Mam nginx 0.7x + PHP-FPM działający pod PHP 5.2.10 na jednym serwerze RHEL5, ale próbuję zduplikować tę konfigurację w pakiecie PHP-FPM w PHP 5.3.3 na drugim serwerze, mam pewne problemy z błędami uprawnień za każdym razem, gdy pojawia się komunikat GET.

FPM został uruchomiony i potwierdził, że fastcgi nasłuchuje na 9000, ale za każdym razem, gdy wykonuję GET, widzę ten błąd w dzienniku 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 działa przynajmniej. Oto mój 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;
        }
    }

(Dodatkowe dyrektywy przepisujące są przeznaczone do korzystania z WordPress multisite aka WordPress MU)

Sprawdziłem także, czy dane www użytkownika są zadeklarowane nie tylko w nginx.conf, ale także w php-fpm.conf dla wartości użytkowników i grup.

Może nie rozumiem, co powoduje komunikat o błędzie 13? Co dziwne, próbowałem skonfigurować dev.noisepages.com na pierwszym serwerze równolegle z kilkoma innymi wirtualnymi hostami - z których każdy działał dobrze - i dostałem ten sam błąd.

Peter Kirn
źródło

Odpowiedzi:

57

Musisz upewnić się, że +xna wszystko z katalogów w ścieżce prowadzącej do katalogu głównego witryny - tak /home, /home/noisepagesi/home/noisepages/www

Niedźwiedź
źródło
2
Tak, w rzeczywistości www miał odpowiednie uprawnienia, ale nie całą ścieżkę! Dzięki! Ma sens - głupi błąd z mojej strony.
Peter Kirn,
1
Gdybym mógł dać ci kolejne 10 głosów pozytywnych, zrobiłbym to.
Tim
Jesteś na prawdę fajny! Spędzam 2 godziny w Google, aby znaleźć odpowiedź! Dziękuję Ci!
Serhii Polishchuk
Dzięki wielkie! Bałaganiłem na serwerze produkcyjnym i drzemałem w zimnym pocie, kiedy to się stało ...!
lephleg
5

upewnij się, że / home / dev ma poprawne uprawnienia

chmod +x /home/dev
Mikrofon
źródło
2

Miałem również problemy z uprawnieniami w php-fpm, w szczególności z sesjami php. Okazało się, że musiałem tylko zmodyfikować użytkownika, którego używa php-fpm do uruchamiania procesów, ponieważ domyślnie był ustawiony na „nikt”.

samouczek na ten temat tutaj: http://www.duchnik.com/tutorials/setting-up-php-with-nginx/

Obrabować
źródło
3
Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Scott Pack
3
Link nie działa ..
Christoph Bühler
1

Miałem prosty problem, który mnie tu doprowadził. Moim rozwiązaniem (na podstawie wybranej odpowiedzi) było wykonanie

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

Teraz działa dobrze :)

Scott Warren
źródło
Ale jak to zrobić, jeśli używasz użytkowników Chroot? Podczas korzystania z chrootowanych użytkowników folder / home / user / www musi być własnością użytkownika i nie działa.
Vincent LITUR
Przepraszam, nie wiem :(
Scott Warren