2009-04-21 10 views
1

lors de la tentative de connexion à ce site (utilisateur: polopolo, pass: samara) le résultat est une page blanche. Je sais que le problème est avec l'envoi d'en-têtes et le ouput_buffering dans le fichier php.ini. J'ai eu le même problème sur un autre hôte mais le problème a été résolu quand j'ai changé output_buffering = On. Cela ne fonctionne pas sur l'hôte actuel et je me demande pourquoi? Aucune suggestion?Problème avec output_buffering et php.ini

-le phpinfo du site actuel.


Édition: Problème résolu. J'ai inversé le code et trouvé des espaces supplémentaires après la balise de fermeture php, avant l'envoi des en-têtes. Le code n'a pas été écrit par moi et j'ai instinctivement ignoré cette option car tout le système fonctionnait déjà sur un autre serveur. Mais mon collègue a fait des changements que je ne connaissais pas ... La leçon apprise: le travail d'équipe est important et ne laisse personne faire la réflexion pour vous. Pourtant, il est un mystère pour moi comment venir après avoir tout essayé pour afficher les erreurs et en particulier le "Ne peut pas modifier les en-têtes", ils ne s'affichent pas correctement. J'ai fait tout ce que vous m'aviez conseillé de faire - afficher les erreurs, les enregistrer et ainsi de suite ... de toute façon merci.

Répondre

3

Vraisemblablement, la page que vous avez tapée immédiatement après la connexion effectue une redirection.

Pour effectuer une redirection, vous devez sortir un en-tête HTTP avec la réponse. Le problème est, si PHP a déjà commencé à sortir le corps du document, il ne peut pas alors sortir un en-tête parce que les en-têtes se sont terminés lorsque le corps a commencé.

La mise en mémoire tampon de sortie empêche PHP de sortir une partie du corps du document jusqu'à ce que le tampon de sortie soit vidé (ou PHP sort). Cela vous permet de sortir les en-têtes à tout moment. Maintenant, si l'activation de la mise en mémoire tampon de sortie a résolu le problème sur son propre site/serveur, mais pas sur un autre, cela indique clairement que le problème n'est pas le même - vous rencontrez un problème différent.

Vous devriez enregistrer les erreurs PHP, vérifiez donc votre journal d'erreurs PHP. Si (et seulement si) vous visualisez ceci sur un site réservé uniquement aux développeurs (ce que vous n'êtes pas), vous pouvez activer display_errors dans votre configuration PHP, ce qui affichera des erreurs sur la page telle qu'elle est affichée. Cela est généralement considéré comme un paramètre non sécurisé sur les serveurs accessibles au public, car les attaquants peuvent tenter de provoquer une erreur pour laquelle le message d'erreur révèle des informations confidentielles.

1

Je ne suis pas un expert et je ne peux pas comprendre ce que la mémoire tampon de sortie à faire avec quelque chose, peut-être qu'il ya des erreurs dans le code?

Pouvez-vous créer un fichier .htaccess avec le contenu suivant:

php_flag display_errors on 
php_value error_reporting 30719 

Placez-le dans le dossier racine de ce site et essayez de vous connecter à nouveau pour voir s'il y a des erreurs de sortie?

+0

l'a essayé. aucune erreur ne se produit.Je ne pense pas que c'est censé être et l'erreur quelque chose avec les en-têtes merdiques que je ne comprends pas. ty si – chosta

+0

Désolé je ne peux pas être de plus d'aide mais vous pourriez essayer encore mais au lieu de 7, utilisez 30719 et commentez ici quand c'est fait ainsi je peux le tester si cela ne vous dérange pas? –

+0

Je ne pense pas que les changements sont en place parce que regarder phpinfo() n'affiche pas les valeurs supposées ("On" pour display_errors; "30719" pour error_reporting) –

0

J'avais aussi le même problème en travaillant sur un projet. Je l'ai corrigé plus tard en définissant output_buffering = 4096 dans le fichier de configuration php.ini et cela a bien fonctionné dans localhost mais quand je l'ai mis sur le serveur hôte, j'ai eu cette erreur encore. Je ne suis pas sûr de savoir comment utiliser mon propre fichier de configuration php.ini sur le serveur hôte. Toute suggestion est la bienvenue ...