web-dev-qa-db-fra.com

Fin prématurée des en-têtes de script: index.php, mod_fcgid: délai d'attente de lecture des données en 61 secondes

J'ai écrit un script d'exploration simple (en php) sur localhost (avec 4 variantes). Tous ont bien fonctionné chez localhost. Mais lorsque je les ai déplacés vers un hébergement partagé, deux d’entre eux ayant travaillé ont donné une erreur de serveur interne. J'ai regardé error_log et j'ai vu ces lignes:

[Wed Jan 23 22:01:02 2013] [warn] [client ***] mod_fcgid: read data timeout in 61 seconds
[Wed Jan 23 22:01:02 2013] [error] [client ***] Premature end of script headers: index.php

J'ai cherché mais je n'ai trouvé aucun résultat utile. Quel est le lien avec ces erreurs? Des idées?

17
Bilal Gultekin

Si vous pouvez accéder au serveur Linux, veuillez éditer le fichier /etc/httpd/conf.d/fcgid.conf avec vim.
Remplacez FcgidIOTimeout 45 par FcgidIOTimeout 600.
Redémarrez Apache.
Ensuite, le délai d'attente CGI rapide sera résolu.

30
trante

Si vous utilisez des hôtes virtuels (dans mon cas, j'ai ispconfig), vous devez modifier les fichiers de configuration d'hôte virtuel. Ces fichiers sont sous /etc/httpd/conf/sites-available pour chaque hôte virtuel. Modifiez simplement le fichier de configuration souhaité, localisez IPCCommTimeout et définissez la valeur actuelle sur un nombre plus élevé. Vous devrez peut-être faire cette modification pour les deux variables dans le même fichier de configuration si vous avez des sites normaux et SSL.

2
Ergec

J'ai eu ce problème sur une instance de MediaTemple Grid avec une installation Drupal7; s'avère que c'était causé par FastCGI; le passage à CGI normal/stable semble avoir résolu le problème.

2
user1193694

lire le délai d'expiration des données en 61 secondes

Ils ont expiré. Il est probable que votre temps d'exécution est défini sur 60 secondes. Donc, à 61 secondes, le processus a été tué et a donc eu un {fin prématurée} _.

Vous pouvez ajuster votre délai (non recommandé) ou exécuter le script via une autre source (recommandé).

0
Jason McCreary

mod_cfgid introduit d'autres délais que le max_execution_time de PHP lors de l'exécution de scripts php. Celui qui vient en premier "gagne".

Autant que je sache, mod_cfgid considère de nombreux éléments de configuration de limite de temps, et je ne suis pas un expert pour dire lequel fait quoi, mais au moins dans notre cas, en ajoutant la ligne suivante

IPCCommTimeout  9999

dans le fcgid.conf résolu nos problèmes de délai d'attente inattendus.

0
Şafak Gezer

Essentiellement, vos scripts sont trop longs pour la configuration du serveur. mod_fcgid attend la réponse de php, et son jeu est prêt à abandonner après 61 secondes. Depuis cet hébergement partagé, vous ne pourrez peut-être pas le changer.

Ce n'est pas quelque chose qui devrait être exécuté via un navigateur/serveur Web de toute façon. Écrivez-le en tant que script de console.

0
datasage

Si un problème concerne mod_fcgid, comme ci-dessous:

Veuillez résoudre ces problèmes en priorité:

_Increasing the memory limit of php (default 128M, up to 256, 384, ... then restart Apache anh check it again)
_Increasing the time out of FCGI, but not need if above is ok
0
tquang