Ich bin gegen eine Wand gestoßen, als ich eine Site mit Nginx / Fpm eingerichtet habe. Die Seite zeigt "Datei nicht gefunden" an und dies wird in der Datei "nginx error.log" angezeigt:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
Ich bin neu in Nginx und Fpm, und diese Fehlermeldung bedeutet nichts für mich (auch die Google-Maschine hat nicht geholfen!). Kann jemand Aufschluss darüber geben, was passieren könnte?
SCRIPT_FILENAME
.Antworten:
Sie sollten einen
location
Abschnitt haben, um PHP-Anfragen zu behandeln, der ähnlich wie folgt konfiguriert ist:(Das Extra
try_files
behebt eine Sicherheitslücke, durch die beliebige Dateien als PHP ausgeführt werden können.)Außerdem sollte Ihr
root
imserver
Abschnitt der Konfigurationsdatei definiert werden, nicht imlocation
Abschnitt. Dies ist eine der häufigsten Fehlkonfigurationen von Nginx .quelle
Dies ist ein Hinweis für Passagierinstallationen.
Ich habe gerade Nginx von der Quelle über Passenger installiert, was ein Problem mit PHP5-FPM verursacht hat. Die Standarddatei nginx.conf nutzt das von Michael Hampton beschriebene Problem. Die Lösung besteht darin, den Block um die Root- und Index-Direktiven zu entfernen.
wird:
Außerdem ist der PHP-Block falsch eingerichtet. Siehe Michael Hamptons Antwort für den richtigen Weg.
Ein zusätzlicher Hinweis könnte sein, dass, wenn php5-fpm für die Verwendung von Sockets eingerichtet ist, der Parameter fastcgi_pass im PHP-Block in nginx.conf auf das Socket-Setup in /etc/php5/fpm/pool.d/www.conf verweist.
quelle
Ich hatte gerade dieses Problem in einer neuen Version von Nginx. (Konfiguration aus einer älteren Version)
Was ich tun musste, war, das
include fastcgi_params;
oben GesagteSCRIPT_FILENAME
wie folgt zu platzieren:Da
SCRIPT_FILENAME
wurde das überschrieben.quelle
Wenn Sie in Ihren Standortblöcken Aliase verwenden, kann dieses Verhalten auch bei einem nicht behandelten 404-Fehler auftreten. Sie können dies sehen, wenn die im Browser angezeigte Seite der einfache Text "Datei nicht gefunden" ist, im Gegensatz zu der hübscheren formatierten (zentrierten) nginx 404-Seite. Im Grunde bedeutet dies, dass die 404-Seite nicht gefunden werden kann.
Fügen Sie zum Lösen eine zusätzliche
try_files $uri =404
Zeile in Ihren Standortblock ein und laden Sie die nginx-Konfiguration neu. Zusätzlich zu den Aussagen von Michael Hampton zur Behebung einer bestimmten Sicherheitslücke kann der FastCGI-Handler die Aliasdefinition überschreiben und das 404-Skript am Standardspeicherort finden.quelle
über zeile 149, php benutzer && benutzergruppe ändern
Ich teste es jetzt erfolgreich.
quelle
Ich habe gesehen :
In einem Server, den ich beim Stresstest unter hohe Last gestellt habe. Mein noch zu bestätigender Verdacht ist, dass die verfügbaren Dateihandles des Betriebssystems erschöpft sind. In diesem Fall kann php-fpm keinen Verweis auf die Datei erhalten.
Mir ist klar, dass dies spekulativ ist, aber es passt mit Sicherheit zu meinem Szenario und könnte auch jemand anderem helfen.
quelle
quelle