php-fpm gibt eine leere Antwort an nginx zurück


9

nginx stellt über fastcgi eine Verbindung zu php-fpm her, wobei der Standard /etc/nginx/fastcgi_paramsim Standortblock verwendet wird.

Wenn Sie über die Befehlszeile mit eine Verbindung zu /.status (php-fpm.ini :: ping.path) herstellen cgi-fcgi -bind, wird das Ergebnis wie erwartet zurückgegeben (X-Powered-By-Satz, Antworttext usw.).

Bei Anfragen mit nginx ist das Ergebnis leer (X-Powered-By-Set, keine Körperlänge oder Inhalt). nginx gibt 200 zurück, da es eine "gültige" Antwort erhalten hat.

Beim Überwachen von tcpdump habe ich die Paritätsanforderungen in ihren FCGI-Headern isoliert (abzüglich der von der Shell noch festgelegten benutzerbezogenen env-Variablen).


Versuchen Sie, zum Benutzer nginx zu wechseln, und führen Sie den Test cgi-fcgi -bind erneut aus.
Einige Linux Nerd

Ich vermassle NRPE-Bereitstellungen immer, indem ich sie als root teste ... dachte, Sie hätten vielleicht das Gleiche getan.
Einige Linux Nerd

Antworten:


11

Die Standarddatei factcgi_paramsenthält nicht die Schlüsselzeile für SCRIPT_FILENAME.

location ~ \.php$ {
                include fastcgi_params;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}

Fügen Sie es hinzu und starten Sie nginx neu.


4

Nun, Ihre Frage ist etwas vage. Ein sogenannter „weißer Bildschirm des Todes“ (WSOD) kann durch eine endlose Menge von Dingen ausgelöst werden. Aber einige Dinge, die ich mache, wenn ich darauf stoße:

  • Aktivieren Sie Folgendes in Ihrem php.ini:

    display_errors = 1
    display_startup_errors = 1
    error_log = /path/to/file
    error_reporting = -1 ; (the -1 activates absolutely everything)
    log_errors = 1
    
  • Aktivieren Sie in Ihrem php-fpm.conf:

    error_log = /path/to/file
    
  • Aktivieren Sie für jede PHP-Fpm-Pool-Konfiguration:

    catch_workers_output = 1
    
  • Wiederholen Sie Ihre Anfrage und überprüfen Sie alle Protokolle (inkl. Nginx-Fehlerprotokoll)
  • Erhöhen Sie die Protokollierungsstufe (z. B. Debuggen auf Nginx).

Wenn Ihnen nichts davon hilft, das Problem zu beheben, veröffentlichen Sie bitte Ihre vollständigen Systeminformationen und Konfigurationen. Ohne das kann Ihnen niemand eine genaue Antwort geben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.