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?
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.
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.
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.
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é).
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.
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.
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