php-fpm renvoyant une réponse vide à nginx

9

nginx se connecte à php-fpm sur fastcgi, en utilisant la norme /etc/nginx/fastcgi_paramsdans le bloc d'emplacement.

Lors de la connexion à /.status (php-fpm.ini :: ping.path) à partir de la ligne de commande avec cgi-fcgi -bind, le résultat revient comme prévu (ensemble X-Powered-By, corps de réponse, etc.).

Lors d'une demande avec nginx, le résultat revient vide (ensemble X-Powered-By, pas de longueur ni de contenu). nginx renvoie 200, car il a obtenu une réponse "valide".

En surveillant tcpdump, j'ai isolé les demandes de parité dans leurs en-têtes FCGI (moins les variables env liées à l'utilisateur toujours définies par le shell).

David Souther
la source
Essayez de passer à l'utilisateur nginx s'exécute en tant que et réexécutez le test cgi-fcgi -bind.
Certains Linux Nerd
Je bousille toujours les déploiements NRPE en les testant en tant que root ... j'ai pensé que vous auriez pu faire la même chose.
Certains Linux Nerd

Réponses:

11

Le factcgi_paramsfichier standard ne contient pas la ligne clé pour 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;
}

Ajoutez-le et redémarrez nginx.

shukshin.ivan
la source
4

Eh bien, votre question est un peu vague. Un soi-disant «écran blanc de la mort» (WSOD) pourrait être déclenché par une quantité infinie de choses. Mais certaines choses que je fais si je rencontre ceci:

  • Activez les éléments suivants dans votre 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
    
  • Activez dans votre php-fpm.conf:

    error_log = /path/to/file
    
  • Activez pour chaque configuration de pool php-fpm:

    catch_workers_output = 1
    
  • Répétez votre demande et vérifiez tous les journaux (y compris le journal des erreurs nginx)
  • Augmentez le niveau de journalisation (par exemple, débogage sur nginx)

Si rien de tout cela ne vous aide à identifier le problème, veuillez publier les informations et configurations complètes de votre système. Personne ne peut vous donner une réponse précise sans cela.

Broyeur de chair
la source