Apache ne rougit pas

J’utilise un Apache 2.2.1 avec PHP 5.3.8 sur un système Linux.

Je dois vider l’en-tête au début de l’appel, mais le navigateur attend que le contenu complet soit livré.

Sur la ligne de commande, en utilisant “php test.php”, tout fonctionne comme prévu, mais pas dès qu’Apache est impliqué.

J’ai tout essayé Définir le output_buffer = Off, zlib.output_compression = Off, désactivé mod_deflate, SendBufferSize 512. J’ai également utilisé toutes les méthodes de vidage dans php. Mais comme je l’ai dit, sur la ligne de commande, cela fonctionne très bien.

Voici l’en-tête de réponse:

  • Date mer. 26 oct. 2011 16:37:07 GMT
  • Serveur Apache / 2.2.21 (Amazon)
  • X-Powered-By PHP / 5.3.8
  • Connexion proche
  • Transfert-encodage en bloc
  • Content-Type text / html; jeu de caractères = UTF-8

J’ai enlevé tous les modules, à l’exception de ceux-ci:

  • LoadModule authz_host_module modules / mod_authz_host.so
  • LoadModule ldap_module modules / mod_ldap.so
  • LoadModule log_config_module modules / mod_log_config.so
  • LoadModule setenvif_module modules / mod_setenvif.so
  • LoadModule mime_module modules / mod_mime.so
  • LoadModule dav_module modules / mod_dav.so
  • LoadModule autoindex_module modules / mod_autoindex.so
  • LoadModule dir_module modules / mod_dir.so
  • LoadModule alias_module modules / mod_alias.so
  • LoadModule rewrite_module modules / mod_rewrite.so

J’espère qu’il y a quelqu’un qui peut m’aider

Il est très probable que Apache vienne bien, mais c’est le navigateur qui décide de continuer à mettre en tampon (et non à lancer le rendu) pendant un certain temps, même après la réception des données vidées.

De la documentation :

flush() peut ne pas être en mesure de remplacer le système de mise en mémoire tampon de votre serveur Web et cela n’a aucun effet sur la mise en mémoire tampon côté client dans le navigateur .

Il n’y a rien que vous puissiez faire à ce sujet, hormis les piratages spécifiques au navigateur, comme l’envoi de nombreux espaces (j’ai dû y recourir il y a plusieurs années) pour que le navigateur “reconsidère”.

Vous devriez essayer d’envoyer la page avec un autre content-type content-type ou sans content-type . Dans notre serveur, nous avions le même problème et nous avons découvert que mod_security bloquait le flush lorsque le content-type était HTML.