Nginx gibt mir einen 500-Fehler, der mich verrückt macht. Zunächst habe ich eine personalsite.conf
Archiv in /etc/nginx/conf.d/
, wo ich meinen Serverblock habe.
Dies ist meine Serverblockkonfiguration:
server { listen 80; server_name personalsite.me; charset UTF-8; access_log /var/log/nginx/personalsite.access.log main; error_log /var/log/nginx/personalsite.error.log; root /usr/share/nginx/html/personalsite; index index.php index.html index.htm; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html/; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Plus nginx-Benutzer haben die richtigen Berechtigungen für /usr/share/nginx/html/personalsite/
.
Nginx gibt mir einen 500-Fehler, wenn ich versuche, personalsite.me
, und das Lustige ist, dass ich das weiß, weil ich die personalsite.access.log
überprüft und gesehen habe, weil der Browser einfach leer ist. Aus unbekannten Gründen Nginx kann mir seine 500-Fehler-Seite nicht anzeigen, die ordnungsgemäß im Serverblock deklariert ist, wie Sie sehen können.
Eine weitere seltsame Sache ist, dass personalsite.error.log
leer ist. es zeichnet nichts auf.
Außerdem habe ich diese Domain mit ihrer IP in meinem /etc/hosts
Archiv deklariert. Ich habe also wirklich keine Ahnung, was hier passiert.
Alles ist r Entfernen von CentOS 7 über ein Digital Ocean VPS.
Antwort
Die meisten Fehler treten aufgrund einer Fehlkonfiguration beim Nigix-Setup auf. Ich werde vorschlagen, die Datei zu überprüfen (/etc/php-fpm.d/www.conf
).
vi /etc/php-fpm.d/www.conf
Suchen Sie die Zeile, die den Listen-Parameter angibt, und Ändern Sie es so, dass es wie folgt aussieht:
listen = /var/run/php-fpm/php-fpm.sock
Suchen Sie als Nächstes die Zeilen, in denen listen.owner
und listen.group
und kommentieren Sie sie aus. Sie sollten folgendermaßen aussehen:
listen.owner = nobody listen.group = nobody
Suchen Sie zuletzt die Zeilen, in denen Benutzer und Gruppe festgelegt sind, und ändern Sie ihre Werte von „apache“ in „nginx“:
user = nginx group = nginx
Speichern und beenden Sie dann
/etc/init.d php-fpm restart
Antwort
Nicht die beste Antwort der Welt, aber ein Fehler von 500 ist zu vieldeutig. Dies kann Ihre Nginx-Konfiguration sein oder mit dem Inhalt Ihrer Website zusammenhängen. Minimieren Sie Ihre Konfiguration und erstellen Sie sie neu, bis Sie das Problem reproduzieren können.
Ersetzen Sie den Inhalt der Website durch eine einfache index.html mit nur einfachem Text. Lassen Sie alle zusätzlichen Fehleranweisungen und den Standortblock weg. Sobald Sie die Grundfunktionalität eingerichtet haben, können Sie sich weniger verrückt fühlen und Ihre anderen Anweisungen hinzufügen, während Sie testen, bis Sie alle Anweisungen, die Probleme verursachen, isolieren und von dort aus die Hauptursache finden.
Kommentare
- Eigentlich hat mir das geholfen zu verstehen, dass mein Nginx in Ordnung ist. Das Problem ist, dass ich ' versuche, die Website auszuführen. Ich habe den gesamten Inhalt durch eine
phpinfo.php
-Datei ersetzt und sie läuft perfekt. Die Website, die ich ' ausführen möchte, verwendet Yii Framework. Ich habe das offizielle Wiki überprüft und es heißt: " Software ist nginx, php-fpm (php5-fpm). Aus Gründen der Leistung wird empfohlen, ' php-fpm im SOCKET-Modus auszuführen, anstatt über IP: PORT zuzugreifen. Dies ist die unten gezeigte Methode " Ich ' verwende Nginx genau so. Ich habe also keine Ahnung, warum es mir einen Fehler von 500 gibt und schreibe nicht in das error.log.
Antwort
Wenn PHP display_errors deaktiviert ist, können PHP-Fehler einen Nginx 500-Fehler zurückgeben.
Sie sollten sich Ihre php-fpm-Protokolle ansehen. Ich bin sicher, dass Sie den Fehler dort finden werden. Mit CentOS 7:
tail -f /var/log/php-fpm/www-error.log
Sie können auch PHP-Fehler anzeigen. Ändern Sie in /etc/php.ini Folgendes:
display_errors = Off
in:
display_errors = On