Nginx + PHP-FPM = "Berechtigung verweigert" Fehler 13 im Nginx-Protokoll; Konfigurationsfehler?

20

Ich habe nginx 0.7x + PHP-FPM unter PHP 5.2.10 auf einem RHEL5-Server ausgeführt, aber ich habe versucht, dieses Setup unter dem in PHP 5.3.3 enthaltenen PHP-FPM auf einem zweiten Server zu duplizieren Probleme mit Berechtigungsfehlern bei jedem GET.

FPM wird gestartet und bestätigt, dass fastcgi auf 9000 lauscht, aber jedes Mal, wenn ich ein GET durchführe, wird dieser Fehler im nginx-Protokoll angezeigt:

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 funktioniert zumindest. Hier ist meine 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;
        }
    }

(Die zusätzlichen Rewrite-Anweisungen gelten für die Verwendung von WordPress Multisite, auch bekannt als WordPress MU)

Ich habe auch überprüft, dass Benutzer-WWW-Daten nicht nur in der Datei nginx.conf, sondern auch in der Datei php-fpm.conf für Benutzer- und Gruppenwerte deklariert sind.

Vielleicht verstehe ich nicht, was die Fehlermeldung 13 verursacht? Seltsamerweise hatte ich versucht, dev.noisepages.com auf dem ersten Server parallel zu ein paar anderen virtuellen Hosts einzurichten, von denen jeder einwandfrei funktionierte, und dabei den gleichen Fehler festgestellt.

Peter Kirn
quelle

Antworten:

56

Sie müssen Sie müssen sicherstellen , +xauf alle der Verzeichnisse im Pfad zur Wurzel der Site führen - so /home, /home/noisepagesund/home/noisepages/www

Bär
quelle
2
Ja, tatsächlich hatte www die richtigen Berechtigungen, aber nicht den gesamten Pfad! Vielen Dank! Sinnvoll - blöder Fehler meinerseits.
Peter Kirn
1
Wenn ich dir noch 10 Upvotes geben könnte, würde ich.
Tim
Du bist wirklich cool! Ich verbringe 2 Stunden in Google, um Ihre Antwort zu finden! Vielen Dank!
Serhii Polishchuk
Vielen Dank! Ich habe auf einem Produktionsserver rumgespielt und war schweißgebadet, als das passierte ...!
Lephleg
5

Stellen Sie sicher, dass / home / dev die richtigen Berechtigungen hat

chmod +x /home/dev
Mike
quelle
2

Ich hatte auch Probleme mit Berechtigungen in PHP-Fpm, insbesondere mit PHP-Sitzungen. Es stellte sich heraus, dass ich nur den Benutzer ändern musste, den php-fpm zum Ausführen von Prozessen verwendet, da er standardmäßig auf "nobody" -Benutzer eingestellt war.

Tutorial dazu hier: http://www.duchnik.com/tutorials/setting-up-php-with-nginx/

rauben
quelle
3
Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Scott Pack
3
Der Link ist tot.
Christoph Bühler
1

Ich hatte ein simlares Problem, das mich hierher brachte. Meine Lösung (basierend auf der ausgewählten Antwort) war do a

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

Jetzt funktioniert es gut :)

Scott Warren
quelle
Aber wie können Sie es tun, wenn Sie Chroot-Benutzer verwenden? Wenn Sie chroot-Benutzer verwenden, muss sich der Benutzer im Ordner / home / user / www befinden. Dies funktioniert nicht.
Vincent LITUR
Entschuldigung, ich weiß nicht :(
Scott Warren