J'ai un site Web sur lequel les utilisateurs peuvent télécharger des images sur mon serveur d'hébergement Apache / PHP. Si le téléchargement des fichiers dure moins de 20 secondes, tout va bien. Mais s'il dure plus longtemps (quelle que soit la taille du fichier image), le téléchargement échoue.
Dans .htaccess, j'ai déjà:
-max_execution_time 180 -max_input_time 180 -upload_max_filesize 10M -post_max_size 70M -memory_limit 128M
Et dans le script php, retourne le résultat de :
echo "-max_execution_time ".ini_get('max_execution_time'); echo "-max_input_time ".ini_get('max_input_time'); echo "-upload_max_filesize ".ini_get('upload_max_filesize'); echo "-post_max_size ".ini_get('post_max_size'); echo "-memory_limit ".ini_get('memory_limit');
est comme excepté:
php_value upload_max_filesize 10M php_value post_max_size 70M php_value max_execution_time 180 php_value max_input_time 180
Ce sont des requêtes - toutes ont échoué après 22sec avec l'erreur net :: ERR_SPDY_PROTOCOL_ERROR ( dans Firefox, ils échouent après 20sec)
https://cdn1.imggmi.com/uploads/2019/5/8/fadd31a1a22674cfc3cc4603c97762ff-full.jpg
Ce qui me manque ici ??? Encore une fois, si la durée de téléchargement est inférieure à 20 secondes, tout va bien ...
5 Réponses :
Peut-être que ce problème provient de la directive "Timeout" dans le fichier apache httpd.conf.
Voir ici: https://httpd.apache.org/ docs / 2.4 / mod / core.html # timeout
@RiggsFolly Je ne vois pas httpd.conf dans mon cpanel / file_manager - il semble que je ne puisse pas y accéder ... ces paramètres sont disponibles pour moi: cdn1.imggmi.com/uploads/2019/5/8/... et cdn1.imggmi.com/uploads/2019/5/8/...
Autant que je sache, le fichier httpd.conf est inaccessible dans les hébergements partagés. mais peut-être que vous pouvez contacter votre support d'hébergement.
exactement, c'était un problème de serveur en raison de l'hébergement partagé et j'ai dû contacter le support d'hébergement ... finalement ils ont fait une reconfiguration du serveur et maintenant le téléchargement ne s'arrête pas si tôt ...
20 secondes peuvent signifier que le module Apache mod_reqtimeout pourrait être ce qui tue votre requête car c'est l'un de ses paramètres par défaut (20 secondes pour recevoir le corps de la requête) si ses options ne sont pas configurées.
https://httpd.apache.org/docs/trunk/mod /mod_reqtimeout.html
Je crois que mod_reqtimeout est une extension chargée automatiquement avec Apache 2.4
Est-il possible que je puisse lire cette valeur ... en utilisant php echo, parce que je ne peux pas accéder aux paramètres Apache (probablement à cause de l'hébergement partagé)? Voici le journal d'une des requêtes ayant échoué cdn1.imggmi.com/ mises en ligne / 2019/5/9 /…
Je ne pense pas que vous puissiez facilement voir votre configuration Apache existante avec PHP. Vérifiez si votre hôte autorise les fichiers htaccess. Si tel est le cas, vous pourrez peut-être configurer reqtimeout_module via ce
J'ai essayé de mettre
dans .htaccess mais j'obtiens une erreur de serveur interne
Cela signifie généralement qu'apache a rencontré une erreur de syntaxe avec votre configuration (fichier htaccess). Êtes-vous sûr de ne pas avoir tapé tout cela sur une seule ligne?
C'était un problème de serveur dû à l'hébergement mutualisé et j'ai dû contacter le support d'hébergement ... ils ont finalement reconfiguré le serveur et maintenant le téléchargement ne s'arrête pas si tôt ... grâce à @ m908070 acclamations
J'ai également rencontré un problème similaire dans mon projet apache2.4-rails-passager-aws-ec2. Lorsque je télécharge un fichier volumineux (plus de 500 Mo), il expire en 20 secondes environ.
J'essayais de modifier la configuration liée au délai d'expiration d'Apache, mais cela ne s'est pas amélioré.
J'ai changé mon serveur d'applications d'apache-passager à fin , puis le téléchargement n'a posé aucun problème. Depuis que cette demande a été publiée récemment, j'ai pensé qu'une version récente d'Apache avait un problème.
Après tout, j'ai rétrogradé apache lors de l'exécution des commandes suivantes, il fonctionne correctement.
# LoadModule reqtimeout_module modules/mod_reqtimeout.so
désactiver ce module - son aide
À quoi votre
max_input_time
est-il défini dansphp.ini
Si PHP s'exécute en tant que FastCGI ou FPM, il existe également des délais d'attente supplémentaires à ce niveau. Avez-vous un contrôle total sur la configuration de votre serveur?
S'il utilise FPM (ce serait le cas s'il s'agit d'une configuration relativement nouvelle), vérifiez ceci: stackoverflow.com/questions/40360922/...