web-dev-qa-db-fra.com

Connexion réinitialisée par un pair: mod_fcgid: erreur lors de la lecture des données du serveur FastCGI

Je rencontre un problème sur PHP) où mon application tente d'exécuter un fichier de sauvegarde php et obtient soudainement le code d'erreur HTTP 500. J'ai vérifié les journaux et ce qu'il dit.

[Mar 28 Août 14:17:28 2012] [avertir] [client xxxx] (104) Connexion réinitialisée par un pair: mod_fcgid: erreur de lecture des données du serveur FastCGI, référent: http://example.com/backup /backup.php
[Mar 28 Août 14:17:28 2012] [erreur] [client xxxx] Fin prématurée des en-têtes de script: backup.php, referer: http://example.com/backup/backup .php

Quelqu'un sait comment résoudre ce problème? Je suis vraiment coincé ici et je ne trouve pas de solution sur Internet.

J'espère que tout le monde pourra partager ses connaissances.

Merci. James

47
James Wise

J'ai réussi à résoudre ce problème en ajoutant FcgidBusyTimeout. Juste au cas où quelqu'un aurait le même problème avec moi.

Voici mes paramètres sur mon Apache.conf:

<VirtualHost *:80>
.......
<IfModule mod_fcgid.c>
FcgidBusyTimeout 3600
</IfModule>
</VirtualHost>
26
James Wise

J'ai eu des erreurs très similaires dans les fichiers journaux Apache2:

(104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
Premature end of script headers: phpinfo.php

Après avoir vérifié les scripts d'emballage et les paramètres Apache2, j'ai compris que/var/www/n'avait pas les autorisations nécessaires. Ainsi, les scripts FCGId Wrapper ne pouvaient pas du tout être lus.

ls -la /var/www
drwxrws---  5 www-data     www-data     4096 Oct  7 11:17 .

Pour mon scénario chmod -o+rx /var/www était bien sûr nécessaire, car les utilisateurs SuExec utilisés ne sont pas membres de www-data _ groupe d’utilisateurs - et ils ne doivent bien sûr pas être membres pour des raisons de sécurité.

11
Oliver Hader

si vous voulez installer une PHP version <5.3.0, vous devez remplacer

--enable-cgi

avec:

--enable-fastcgi

dans votre ./configure déclaration, extrait de la doc de php.net:

--enable-fastcgi

Si cette option est activée, le module CGI sera également construit avec le support de FastCGI. Disponible depuis PHP 4.3.0

À partir de PHP 5.3.0, cet argument n'existe plus et est activé à la place par --enable-cgi. Après la compilation, le ./php-cgi -v devrait ressembler à ceci:

PHP 5.2.17 (cgi-fcgi) (built: Jul  9 2013 18:28:12)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

AVIS LE (cgi-fcgi)

4
reiner23fx

Le célèbre script "replace.php" de Moodle peut également générer cette situation. Pour moi, cela a pris des années pour s'exécuter et ensuite échouer avec un message 500 dans le navigateur et également avec le message d'erreur ci-dessus dans mon fichier journal des erreurs Apache.

J'ai suivi @ james-wise answer: FcgidBusy est décrit de manière lisible dans documentation Apache . J'ai essayé ceci: doublé le temps que Apache donnerait à mon script pour s'exécuter, en insérant la ligne suivante dans /etc/Apache2/mods-available/fcgid.conf

FcgidBusyTimeout 600

Ensuite, j'ai redémarré Apache et essayé de réexécuter mon script replace.php.

Heureusement, cette fois-ci, l'instance de script est arrivée à son terme, ce qui a donc servi de solution.

2
owenmck

Dans les versions CentOS, suexec est compilé pour ne fonctionner que dans/var/www. Si vous essayez de définir un objet DocumentRoot ailleurs, vous devez le recompiler. L'erreur dans le journal Apache est la suivante: (104) La connexion est réinitialisée par un autre utilisateur: mod_fcgid: erreur de lecture des données du serveur FastCGI Fin prématurée des en-têtes de script: php5.fcgi

2
Jivko Todorov

Pas dans ceci interroge le cas des demandeurs mais souvent:

Que signifie l'erreur "fin prématurée des en-têtes de script" ?

Cette erreur signifie que l'appel FCGI a été terminé de manière inattendue.

Dans certains cas, cela signifie que le script "backup.php" s'est bloqué.

Comment régler ceci?

Si le blocage d'un script en était la cause, corrigez-le pour qu'il ne se bloque pas. Ensuite, cette erreur est également corrigée. Pour savoir si et pourquoi un script se bloque, vous devez déboguer il. Par exemple, vous pouvez consulter le journal des erreurs PHP. Les erreurs consignées dans STDERR entrent normalement dans le gestionnaire d’erreurs de la FCGI.

2
hakre

Je suis tombé sur celui-ci lors du débogage d'une erreur liée à virtualmin/Apache.

Dans mon cas, j'utilise virtualmin et j'avais dans le php.ini de ma machine virtuelle safe_mode = On.

Dans le journal des erreurs de ma machine virtuelle, la connexion fcgi était réinitialisée par un pair: mod_fcgid: erreur lors de la lecture des données à partir du serveur FastCGI

J'obtenais dans mon journal d'erreur Apache principal: PHP Erreur fatale: la directive 'safe_mode' n'est plus disponible dans PHP dans Unknown on line 0

Dans mon cas, je définis simplement safe_mode = Off dans mon php.ini et redémarre Apache.

stackoverflow.com/questions/18683177/where-to-start-with-deprecated-directive-safe-mode-on-line-0-in-Apache-error

2
Lance

J'ai eu ce problème et je me suis rendu compte que le fichier cgi-bin/php-fcgi n'avait aucun droit d'exécution.

Il avait le mode 644 alors qu'il devrait avoir le mode 755.

Définir le mode correct était impossible (probablement parce que le fichier était ouvert ou qch), alors j'ai copié ce fichier à partir d'un autre répertoire de domaine où les droits appropriés étaient déjà définis et tout corrigé.

2
sEver

J'ai eu le même problème avec les scripts longs avec les messages d'erreur "Fin prématurée des en-têtes de script: index.php" et "Connexion réinitialisée par un pair: mod_fcgid: erreur lors de la lecture des données du serveur FastCGI" dans error_log. Après des heures de test, cela m'aide (CentOS 6, PHP-FPM 7, Plesk 12.5.30):

éditez le fichier de configuration:

/etc/httpd/conf.d/fcgid.conf

Définir un temps d'exécution plus long. Dans mon cas 600 secondes

créer la nouvelle entrée:

FcgidBusyTimeout 600

adapter les entrées suivantes:

FcgidIOTimeout 600

FcgidConnectTimeout 600

redémarrer httpd:

service httpd restart

2
joruf81

Il suffit d'installer php5-cgi dans debian

Sudo apt-get install php5-cgi

en centos

Sudo yum installe php5-cgi
1
Mancy

J'ai augmenté le temps d'exécution maximum à 600 secondes de travail effectué!

plesk 17 - domain effected

1
Stephen Murray

J'ai eu le même problème avec une solution différente et simple.

Problème

J'ai installé PHP 5.6 en suivant la réponse acceptée à cette question sur Ask Ubunt . Après avoir utilisé Virtualmin pour passer d'un serveur virtuel particulier de PHP = 5.5 à PHP 5.6, j'ai reçu une erreur de 500 serveur interne et mes entrées étaient identiques dans le journal des erreurs Apache:

[Tue Jul 03 16:15:22.131051 2018] [fcgid:warn] [pid 24262] (104)Connection reset by peer: [client 10.20.30.40:23700] mod_fcgid: error reading data from FastCGI server
[Tue Jul 03 16:15:22.131101 2018] [core:error] [pid 24262] [client 10.20.30.40:23700] End of script output before headers: index.php

Cause

Simple: Je n'ai pas installé le php5.6-cgi paquet .

Réparer

L'installation du paquet et le rechargement d'Apache ont résolu le problème:

  • Sudo apt-get install php5.6-cgi si vous utilisez PHP 5.6

  • Sudo apt-get install php5-cgi si vous utilisez une différente PHP 5 version

  • Sudo apt-get install php7.0-cgi si vous utilisez PHP 7

Ensuite, utilisez service Apache2 reload pour appliquer la configuration.

1
user5626466

Vérifiez/var/lib/php/session et ses autorisations. Ce répertoire doit être accessible en écriture à l'utilisateur pour que la session puisse être stockée.

0
mangia

Comme cela a déjà été mentionné, cela pourrait se produire en raison de problèmes d’autorisation du gestionnaire fcgi. Si vous utilisez suexec, n'oubliez pas de vérifier si Apache a ce module activé.

0
kK-Storm

Dans mon cas, j'utilisais une extension personnalisée pour mes fichiers PHP et je devais éditer /etc/Apache2/conf-available/php7.2-fpm.conf et ajoutez le code suivant:

    <FilesMatch ".+\.YOUR_CUSTOM_EXTENSION$">
        SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </FilesMatch>
0
Novo

Si vous êtes sur un serveur partagé comme moi, l'hôte a déclaré que cela résultait de la limitation de la mémoire. Ils tuent donc les scripts, ce qui entraîne la "fin prématurée des en-têtes de script" dans cette erreur. Ils m'ont référé à ceci:

https://help.dreamhost.com/hc/en-us/articles/216540488-Why-did-procwatch-kill-processes-on-my-Shared-serv

Compte tenu d'une augmentation de la mémoire, les problèmes ont disparu. Je pense qu'un plugin de sauvegarde Updraft sur wordpress était peut-être trop zélé dans ses fonctions/paramètres.

0
edindubai