Wie behebt man bei Nginx das Problem „Keine Eingabedatei“, wenn Pfad und Berechtigungen in Ordnung sind?

Wie behebt man bei Nginx das Problem „Keine Eingabedatei“, wenn Pfad und Berechtigungen in Ordnung sind?

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:

  1. dieser Pfad ist korrekt, dies ist die Wurzel meiner Website

  2. www-datahat die Berechtigung, darauf zuzugreifen (wenn ich sie habe su www-data, cat /usr/share/nginx/drupal7/index.phpwird die Datei angezeigt).

  3. Sowohl Nginx-Root als auch fpm/pool.d/myserver.confChroot verweisen auf denselben Ordner:/usr/share/nginx/drupal7

  4. www-dataBenutzer und Gruppe haben 660Zugriff auf denselben Ordner inpool.d/myserver.conf

  5. ps -u www-datazeigt, dass es nginx- und php5-fpm-Prozesse besitzt

  6. Ich habe SElinux nicht installiert (wie einige Diskussionen behaupten, könnte das das Problem sein)

Warum kann der www-dataBenutzer auf mich zugreifen, index.phpaber 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.

verwandte Informationen