NGINX führt keine PHP-Dateien aus

9

Ich konnte keine Antwort darauf finden. PHP5 + NGINX + PHP-FPM installiert und kann keine PHP-Dateien ausführen, es wird ein "Ups! Dieser Link scheint defekt zu sein." Fehler in CHROM. Ich habe keinen wertvollen Fehlerprotokollbericht, ich habe eine index.php im Stammverzeichnis, habe versucht, eine benutzerdefinierte phpinfo.php-Datei zu erstellen, aber es hat auch nicht funktioniert.

Ich kann HTML-Dateien laden, aber nicht PHP.

Hier ist meine lokale Site-Konfiguration in NGINX:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    location / {
        root   /var/www/website;
        index  index.html index.htm index.php;
    }


    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/website$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

Der Besitz des gesamten Verzeichnisses wurde in www-data geändert: www-data, machte eine 777 in der PHP-Datei, nichts. Nginx, FPM neu gestartet, nichts.

Hilfe? :(

Gabriel A. Zorrilla
quelle
Schauen Sie in Ihrem Fehlerprotokoll
Mike
Bereits "Ich habe keinen wertvollen Fehlerprotokollbericht". Es ist völlig leer.
Gabriel A. Zorrilla
Sie benötigen mehr Daten, um das Problem zu diagnostizieren. Ich würde vorschlagen, zunächst 'fastcgi_intercept_errors on' hinzuzufügen. in Ihre Konfiguration (falls nicht in fastcgi_params), um alle FPM-Fehler zu protokollieren. Fügen Sie außerdem 'debug' zu Ihrer error_log-Zeile hinzu, um viel mehr Details zu erhalten (überprüfen Sie auch das Haupt-nginx-error_log (möglicherweise in / var / log)). Ihre Anweisung server_name sieht ungewöhnlich aus - Sie sind sich nicht sicher, ob Sie sie für diesen Beitrag ersetzt haben oder ob sie tatsächlich so ist. Verschieben Sie als allgemeine Empfehlung Ihre Root-Direktive aus Ihrem Standortblock. (Letzter (unwahrscheinlicher) Vorschlag: Stellen Sie sicher, dass Ihr Standardserver nicht die HTML-Seiten bereitstellt, die Sie sehen können.)
Cyberx86

Antworten:

9

es wird ein "Ups! Dieser Link scheint defekt zu sein." Fehler in CHROM.

Chrome zeigt eine eigene Fehlerseite an, wenn die Fehlerseite weniger als 512 Byte umfasst.

Ich vermute, dass Sie die folgende Zeile in haben fastcgi_params:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

und wenn ja, weil die rootDirektive in definiert ist, location /wird sie niemals angewendet location ~ \.php$, so SCRIPT_FILENAMEwird die URI.

Dies kann gelöst werden, indem die rootDirektive in die verschoben wirdserver Ebenenkontext verschoben wird:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    root   /var/www/website;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}
Quanten
quelle
Bingo. Root den Serverblock wie vorgeschlagen verschoben und funktioniert. Vielen Dank!
Gabriel A. Zorrilla
@quanta: Hat das OP die Konfiguration in seiner Frage bearbeitet? Da es sich um einen fest codierten Pfad handelt, sollte er weiterhin einwandfrei funktionieren, wenn die Root-Direktive im Standortkontext definiert ist. Der einzige Fall, in dem es nicht funktionieren würde, wäre, wenn er SCRIPT_FILENAME in seiner Datei fastcgi_params mit $ document_root definiert und damit seine fest codierte überschrieben hätte.
Martin Fjordvald
@MartinF: Nein, das OP hat die Konfiguration nicht bearbeitet. Du hast recht. Ich werde meine Antwort bearbeiten.
Quanten
-3

In meinem Fall fehlte das PHP-Zip-Paket. Um dies zu beheben, lief ich:

yum install -y php-zip
systemctl restart php-fpm nginx
wejdross
quelle
3
Anscheinend war die Ursache für OP etwas ganz anderes.
Sven
Das bedeutet nicht, dass jemand, der mit diesem Problem den Weg zu dieser Seite findet, die gleiche Ursache wie das OP hat. Möglicherweise hat er die Ursache, die wejdross hatte, und findet diese Antwort nützlich. Die Frage ist nicht spezifisch für diese Ursache, sie ist spezifisch für dieses Symptom, und offensichtlich gibt es mehrere Ursachen dafür, sodass Menschen mit unterschiedlichen Ursachen hier landen könnten.
Synetech
-4
    fastcgi_pass unix:/var/run/php5-fpm.sock;
James
quelle
4
Willkommen bei Server Fault! Es sieht so aus, als ob Sie das Wissen haben, hier eine gute Antwort zu geben, aber bitte lesen Sie. Wie schreibe ich eine gute Antwort? in unserer Hilfe und überarbeiten und erweitern Sie dann Ihre Antwort. Ihre Befehle / Codes / Einstellungen können technisch die Lösung sein, aber einige Erklärungen sind willkommen. Danke im Voraus.
HBruijn
4
Außerdem: Auch wenn diese eine Zeile das Problem löst, wohin geht sie? Das OP zeigt zwei locations. Geht die Linie in eine? Das andere? Beide? Bitte bearbeiten Sie Ihre Antwort, um sie zu vervollständigen.
David Makogon