
Ich weiß, dass dies eine häufige Frage ist, aber ich habe keine Diskussion gefunden, die genau auf meinen Fall zutrifft.
Das Nginx-Fehlerprotokoll zeigt:
FastCGI hat in stderr Folgendes gesendet: „Primäres Skript kann nicht geöffnet werden: /usr/share/nginx/drupal7/index.php
Aber:
dieser Pfad ist korrekt, dies ist die Wurzel meiner Website
www-data
hat die Berechtigung, darauf zuzugreifen (wenn ich sie habesu www-data
,cat /usr/share/nginx/drupal7/index.php
wird die Datei angezeigt).Sowohl Nginx-Root als auch
fpm/pool.d/myserver.conf
Chroot verweisen auf denselben Ordner:/usr/share/nginx/drupal7
www-data
Benutzer und Gruppe haben660
Zugriff auf denselben Ordner inpool.d/myserver.conf
ps -u www-data
zeigt, dass es nginx- und php5-fpm-Prozesse besitztIch habe SElinux nicht installiert (wie einige Diskussionen behaupten, könnte das das Problem sein)
Warum kann der www-data
Benutzer auf mich zugreifen, index.php
aber nicht auf FastCGI? Warum versucht FastCGI den richtigen Pfad, sagt dann aber, dass er nicht existiert?
Antwort1
Sie haben ein Chroot-Verzeichnis eingerichtet. Wenn sich der Prozess im Chroot-Verzeichnis befindet, sieht der Pfad vom Stammverzeichnis zum Skript folgendermaßen aus:
/index.php
Sie müssen daher die mit den FastCGI-Skriptaufrufen verwendeten Pfade so ändern, dass sie nicht den vollständigen Verzeichnispfad zur Skriptdatei enthalten.