Cannot modify header information - headers already sent by XXXXXXXXXX

Petit nouveau ! | 2 Messages

11 avr. 2019, 17:26

Bonjour,
Comme j'ai pu le dire juste ici sql-bases-donnees/fatal-error-uncaught- ... 79864.html j'ai un problème depuis quelques jours sur mon site internet.
Du jour au lendemain sans que je touche quoi que ce soit, mes pages ne parvenaient plus à récupérer des informations dans ma base de donnée, après avoir fait pas mal de test et d'avoir "print" l'erreur retournée par PDO, voici ce que j'ai pu comprendre :

Sur mon site j'ai quelques fichiers que j'inclus dans toutes mes pages (avec include()) pour "optimiser" mon code, par exemple "sidebar.php", "footer.php", "alert.php", etc ...

Erreur PDO :
Cannot modify header information - headers already sent by (output started at /home/havannario/www/staff/inc/alert.php:2)
Contenu du fichier alert.php :
<?php
echo('<div class="alert alert-danger" role="alert"><b>Infos : </b>Quelques problèmes actuellement avec le panel, tout devrait rentrer dans l\'ordre dans les plus brefs délais.</div')
?>

Mais j'ai remarqué que si j'enlève quelques caractère de mon fichier alert.php, par exemple si j'enlève "<b>Infos : </b>", l'erreur n'est plus là mais c'est un autre fichier qui pose ensuite problème.

Je ne comprends pas, je vois personnellement aucune logique là dedans, pourquoi le simple fait d'avoir quelques caractères en plus pourrait causer des problème de "header".

Si vous avez des idées, je suis preneur :/
Merci !

Mammouth du PHP | 1531 Messages

12 avr. 2019, 09:07

ce type d'erreur survient classiquement lorsqu'on cherche à modifier les header, avec header() ou session_start() par exemple, après avoir envoyé des données avec un echo, print, etc. mais aussi du code en dehors de balise <,php ?>.

Il faut donc que tu envisage d'utiliser les fonctions modifiant le header en premier
soit en décalant l'affichage après soit en stockant le code à afficher en variable pour ne l'afficher que plus tard.

concernant les balises <b> que tu retire pour déplacer l'erreur je pense qu'il doit y avoir une tolerance du serveur, mais il est préferrable de modifier les header avant toute sortie quoi qu'il arrive.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Mammouth du PHP | 856 Messages

12 avr. 2019, 21:12

Tu dis que tu appelles des routines externes par include ...
Vérifie la fin de ces fichiers, à savoir qu'il ne doit y avoir aucun caractère - pas même un retour de chariot - après ?> dans les fichiers appelés

Pour ma part, j'opté pour ne pas fermer la balise php de mes sous-routines, ça évite le problème que tu décris.
Soyez artisans de paix

Christian67
Invité n'ayant pas de compte PHPfrance

22 avr. 2019, 09:11

Bonjour,

Contacte OVH en ouvrant un ticket. Tu verras, quand ils te répondront, tout sera rentré dans l'ordre. Ne modifie rien à ton code, ni à ta base, et attends. Chez moi, tout re-fonctionne (comme je l'explique dans le lien que tu donnes sur ton premier post) sans que je ne modifie quoi que se soit. Le problème vient de chez eux.

Christian.