Ich habe einen Nginx-Server mit PHP5-Fpm eingerichtet. Wenn ich versuche, die Site zu laden, wird eine leere Seite ohne Fehler angezeigt. HTML-Seiten werden gut serviert, aber nicht PHP. Ich habe versucht, display_errors in der php.ini einzuschalten, aber kein Glück. php5-fpm.log erzeugt keine Fehler und nginx auch nicht.
nginx.conf
server {
listen 80;
root /home/mike/www/606club;
index index.php index.html;
server_name mikeglaz.com www.mikeglaz.com;
error_log /var/log/nginx/error.log;
location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
BEARBEITEN
Hier ist mein Nginx-Fehlerprotokoll:
2013/03/15 03:52:55 [error] 1020#0: *55 open() "/home/mike/www/606club/robots.txt" failed (2: No such file or directory), client: 199.30.20.40, server: mikeglaz.com, request: "GET /robots.txt HTTP/1.1", host: "mikeglaz.com"
connect() failed ... fastcgi://127.0.0.1:9000
widerspricht Ihrer Nginx-Konf. Nginx-Konf neu laden?Antworten:
Als Referenz füge ich meinen
location
Block zum Abfangen von Dateien mit der.php
Erweiterung hinzu:Überprüfen Sie das
/path/to/fastcgi-params
und stellen Sie sicher, dass es für den Nginx-Benutzer vorhanden und lesbar ist.quelle
ersetzen
mit
und entferne fastcgi_param SCRIPT_FILENAME ... in nginx.conf
quelle
.conf
fehlt ein zusätzlicher Konfigurationsparameter_params
./etc/init.d/nginx restart
) hat es auch für mich bei Debian Testing nach einemnginx
Upgrade am 10. September 2014 behoben .fastcgi_params
vsfastcgi.conf
: blog.martinfjordvald.com/2013/04/…Hatte auch dieses Problem und fand hier endlich die Lösung . Kurz gesagt, Sie müssen die folgende Zeile zu Ihrer nginx fastcgi-Konfigurationsdatei hinzufügen (/ etc / nginx / fastcgi_params in Ubuntu 12.04).
quelle
Viele Benutzer fallen in diesen Thread und erwarten, eine Lösung für leere Seiten zu finden, die bei Verwendung von nginx + php-fpm angezeigt werden. Ich bin einer von ihnen. Dies ist eine Zusammenfassung dessen, was ich getan habe, nachdem ich viele der Antworten hier und meine eigenen Untersuchungen gelesen hatte (aktualisiert auf php7.2):
1) Öffnen
/etc/php/7.2/fpm/pool.d/www.conf
und überprüfen Sie den Wert des Parameterslisten
.2) Der Parameter
listen
sollte mit demfastcgi_pass
Parameter in Ihrer Site-Konfigurationsdatei übereinstimmen (i, e :)/etc/nginx/sites-enabled/default
.3) Überprüfen Sie, ob die Datei tatsächlich vorhanden ist:
4) Wenn es nicht existiert, bedeutet dies , dass php7.2-fpm nicht ausgeführt wird. Sie müssen es daher neu starten:
In Bezug auf den
location
Abschnitt in/etc/nginx/sites-enabled/default
:Überprüfen Sie, ob die Datei
snippets/fastcgi-php.conf
am Speicherort vorhanden ist/etc/nginx/
:Diese Datei enthält eine Liste der Variablendefinitionen, die für php7.2-fpm erforderlich sind. Die Variablen werden direkt oder durch Einschließen einer getrennten Datei definiert.
Diese Datei befindet sich unter
/etc/nginx/fastcgi.conf
und sieht aus wie folgt :nginx enthält zwei mögliche Parameterdateien: fastcgi_params und fastcgi.conf . Der Unterschied zwischen beiden ist die Definition der Variablen
SCRIPT_FILENAME
:Um es kurz zu machen, fastcgi.conf sollte immer funktionieren. Wenn Sie aus irgendeinem Grund fastcgi_params verwenden , sollten Sie Folgendes definieren
SCRIPT_FILENAME
:Laden Sie nun die Nginx-Konfiguration neu:
Und überprüfen Sie, ob eine PHP-Datei korrekt angezeigt wird. Zum Beispiel:
/var/www/html/test.php
Wo
/var/www/html
ist der Pfad zum Dokumentstamm?Wenn trotz alledem immer noch eine leere Datei angezeigt wird, stellen Sie sicher, dass
php.ini
dieseshort_open_tag
aktiviert ist (wenn Sie eine PHP-Seite mit kurzen Tags testen).quelle
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Hab den Trick endlich gemacht.Stellen Sie sicher, dass Sie dies in / etc / nginx / fastcgi_params haben
Wer weiß, warum das nicht schon da ist? Die Zeit, die dies gemeinsam verschwenden muss!
quelle
Ich habe ein kurzes C-Programm geschrieben, das die von nginx an die fastCGI-Anwendung übergebenen Umgebungsvariablen zurückgibt.
Speichern Sie dies in einer Datei, z
fcgi_debug.c
Um es zu kompilieren, installieren Sie zuerst
gcc
und führen Sielibfcgi-dev
dann Folgendes aus:Um es auszuführen, installieren Sie es
spawn-fcgi
und führen Sie dann Folgendes aus:Ändern Sie dann Ihre nginx fcgi-Konfiguration so, dass sie auf das Debug-Programm verweist:
Starten Sie nginx neu, aktualisieren Sie die Seite und Sie sollten alle Parameter in Ihrem Browser sehen, damit Sie debuggen können! :-)
quelle
apt-get install spawn-fcgi libfcgi-dev
.Diese Hinweise halfen mir bei der Installation von Ubuntu 14.04 LTS.
Darüber hinaus musste ich auf dem einzuschalten
short_open_tag
in/etc/php5/fpm/php.ini
quelle
Fügen Sie dies hinzu in
/etc/nginx/conf.d/default.conf
:quelle
/etc/nginx/fastcgi_params
Datei zu setzen wäre meiner Meinung nach richtiger.Falls jemand dieses Problem hat, aber keine der oben genannten Antworten seine Probleme löst, hatte ich das gleiche Problem und hatte es am schwersten, es aufzuspüren, da meine Konfigurationsdateien korrekt waren, meine Jobs ngnix und php-fpm einwandfrei liefen und Es sind keine Fehler durch Fehlerprotokolle aufgetreten.
Ein dummer Fehler, aber ich habe die Variable Short Open Tag in meiner php.ini-Datei, die auf eingestellt war, nie überprüft
short_open_tag = Off
. Da meine PHP-Dateien<?
anstelle von verwendet wurden<?php
, wurden die Seiten leer angezeigt. Short Open Tag sollteOn
in meinem Fall eingestellt sein.Hoffe das hilft jemandem.
quelle
Der Grund für dieses Problem liegt darin, dass die FastCGI-Konfigurationen in Nginx nicht wie erforderlich funktionieren und an Ort und Stelle oder bei der Verarbeitung als HTML-Daten reagieren. Es gibt zwei Möglichkeiten, wie Sie Ihren Nginx konfigurieren können, um dieses Problem zu vermeiden.
Methode 1:
Methode 2:
Beide Methoden würden richtig funktionieren, Sie können fortfahren und eine von ihnen nehmen. Sie führen fast die gleichen Operationen mit sehr wenigen Unterschieden aus.
quelle
Viel Glück
quelle
Keine der oben genannten Antworten funktionierte für mich - PHP hat alles richtig gerendert, außer Seiten, die auf mysqli beruhten, für die es eine leere Seite mit einem 200-Antwortcode sendete und keine Fehler auslöste. Da ich unter OS X bin, war das Update einfach
sudo port install php56-mysql
gefolgt von einem Neustart von PHP-FPM und Nginx.
Ich habe von einem älteren Apache / PHP-Setup auf nginx migriert und die Versionsinkongruenz im Treiber für
php-mysql
und nicht bemerktphp-fpm
.quelle
Ich hatte ein ähnliches Problem, Nginx verarbeitete eine Seite zur Hälfte und hielt dann an. Keine der hier vorgeschlagenen Lösungen funktionierte für mich. Ich habe es behoben, indem ich die nginx fastcgi-Pufferung geändert habe:
Nach den Änderungen
location
sah mein Block so aus:Weitere Informationen finden Sie unter https://www.namhuy.net/3120/fix-nginx-upstream-response-buffered-temporary-file-error.html
quelle
Wenn Sie einen leeren Bildschirm erhalten, kann dies zwei Gründe haben:
Browser blockiert die Anzeige der Frames. In einigen Browsern gelten die Frames als unsicher. Um dies zu überwinden, können Sie die rahmenlose Version von phpPgAdmin von starten
http://-your-domain-name-/intro.php
Sie haben eine Sicherheitsfunktion in Nginx für X-Frame-Optionen aktiviert und versuchen, sie zu deaktivieren.
quelle
Dies löste mein Problem:
quelle
Dies ist mein vhost für UBUNTU 18.04 + apache + php7.2
Die letzte Zeile unterscheidet sich von den anderen Antworten.
quelle
Ich hatte einen ähnlichen Fehler, aber in Kombination mit Nextcloud. Falls dies nicht funktioniert hat, versuchen Sie Folgendes: Sehen Sie sich das Nginx-Handbuch an .
quelle