Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1391 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Cannot modify header information - headers already sent by

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Cannot modify header information - headers already sent by

n°2377566
Groody
Utilisez MES smileys §
Posté le 02-03-2021 à 17:36:26  profilanswer
 

Salut !
 
Je suis en train de migrer des scripts d'un serveur/hébergeur à un autre serveur/hébergeur.
 
Ca n'est pas transparent, ça coince pas mal, mais j'avance.
 
Sauf là, je bloque.
 
Via un .sh j'appelle un fichier PHP qui génère une image. L'image est bien générée.
Mais j'ai ces 2 erreurs qui sortent dans le log :
 
"Cannot modify header information - headers already sent by"
 
D'après ce site : https://stackoverflow.com/questions [...] ror-in-php c'est parceque l'entête est écrit après le fichier (si j'ai bien compris).
J'ai donc modifié l'ordre des lignes à la fin du code, mais ça ne change rien, j'ai toujours les erreurs.
Et là, ça me dépasse.
 
Est-ce que quelqu'un aurai une idée svp ?
 
 
 
Le code initial finissait par :

Code :
  1. ...
  2. $heatmap->setImageFormat('jpeg');
  3. $heatmap->setImageCompressionQuality($quality);
  4. $file = $heatmap->getImageBlob();
  5. file_put_contents('/home/clients/ddd/www.ddd.com/www/dossier/'.$finalfilename, $file);
  6. if ($returnFileAtEnd){
  7.     header("Content-Type: image/jpeg" );
  8.     echo $file;
  9. }else{
  10.     $result = array();
  11.     $result['status'] = 'OK';
  12.     $result['GeneratedAt'] = date('Y-m-d H:i:s');
  13.     header("Content-Type: application/json" );
  14.     echo json_encode($result);
  15. }
  16. die();


 
 
 
 
Je l'ai modifié par :

Code :
  1. ...
  2. if ($returnFileAtEnd){
  3.     header("Content-Type: image/jpeg" );
  4.     echo $file;
  5. }else{
  6.     $result = array();
  7.     $result['status'] = 'OK';
  8.     $result['GeneratedAt'] = date('Y-m-d H:i:s');
  9.     header("Content-Type: application/json" );
  10.     echo json_encode($result);
  11. }
  12. die();
  13. $heatmap->setImageFormat('jpeg');
  14. $heatmap->setImageCompressionQuality($quality);
  15. $file = $heatmap->getImageBlob();
  16. file_put_contents('/home/clients/ddd/www.ddd.com/www/dossier/'.$finalfilename, $file);


 
mais pas mieux...
 
 
 
L'erreur complète est :

Citation :

PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/clients/ddd/www.ddd.com/www/dossier/mon-fichier.php:186) in /home/clients/ddd/www.ddd.com/www/dossier/mon-fichier.php on line 317
 
Warning: Cannot modify header information - headers already sent by (output started at /home/clients/ddd/www.ddd.com/www/dossier/mon-fichier.php:186) in /home/clients/ddd/www.ddd.com/www/dossier/mon-fichier.php on line 317


---------------
Vidéo Concorde Air France | www.kiva.org
mood
Publicité
Posté le 02-03-2021 à 17:36:26  profilanswer
 

n°2377568
Groody
Utilisez MES smileys §
Posté le 02-03-2021 à 17:59:51  profilanswer
 

Avant de poster, j'avais lu plein de trucs sur le net, et ça ne marchait pas.
 
Mais là apparemment j'ai trouvé la soluce : ajouter ceci ob_start();  après la ligne <?php
 
Je n'ai plus d'erreur !
 [:groody]


---------------
Vidéo Concorde Air France | www.kiva.org
n°2377644
MaybeEijOr​Not
but someone at least
Posté le 03-03-2021 à 14:34:30  profilanswer
 

Bonjour,
 
Vérifier qu'il n'y ait pas de BOM en début de fichier, c'est typiquement le problème qui peut conduire à cet avertissement.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2377645
Groody
Utilisez MES smileys §
Posté le 03-03-2021 à 15:11:44  profilanswer
 

Je ne sais pas ce que c'est, mais je vais chercher et tester.
Merci :)


---------------
Vidéo Concorde Air France | www.kiva.org
n°2377649
Groody
Utilisez MES smileys §
Posté le 03-03-2021 à 15:25:56  profilanswer
 

D'après cette explication, mes fichiers sont pourtant ok (en UTF8)
https://www.hesk.com/knowledgebase/index.php?article=87
 
 
https://zupimages.net/up/21/09/xi0o.png


---------------
Vidéo Concorde Air France | www.kiva.org
n°2377659
MaybeEijOr​Not
but someone at least
Posté le 03-03-2021 à 17:59:20  profilanswer
 

Sur quel fichier as-tu fait le test ? Celui que tu as modifié avec ob_start() ? Parce qu'il a pu être convertit lors de ta modification.

 

Après ce n'est pas forcément le BOM le problème, mais si ça fonctionnait avant c'est quand même le plus probable. Passes-tu d'une version de PHP à une autre ? Mais bon je vois mal une méthode mise à jour entre deux versions PHP qui se mettrait à envoyer un header qu'elle n'envoyait pas avant.

 

Sinon, le problème vient de tout ce qui peut précéder ton appel au header, or tu ne montres qu'une très courte partie du code.


Message édité par MaybeEijOrNot le 03-03-2021 à 17:59:38

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2377918
rufo
Pas me confondre avec Lycos!
Posté le 06-03-2021 à 15:46:35  profilanswer
 

Ca peut être un espace qui se trouve avant <?php en début de fichier ou alors un espace généré par une fonction qui ne fait pas son taf du fait du changement de serveur (et donc de version d'une lib).
 
Fait afficher toutes les erreurs de php pour ne rien rater.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2387279
djinto
Posté le 05-06-2021 à 00:16:43  profilanswer
 

Bonjour,

 

c'est ton die(); qui crées l'erreur.  Remets   or die();

 

en fait die() permet de quitter moins que le script Php ; c'est comme 'cancel / ou 'abort' ... c'est une sorte de try / catch / finally { return false;}
il est fréquent lors de tentative de connection
if connect ....   or die() ; // pour l'exemple.

 


et quand ton script est executé , il atteint la ligne die();
et continue à lire le fichier de script ... puiqu'il reste quelques lignes après.

 

pour vraiment quitter l'execution d'une page de script , ou un ensemble de code : exit(true);  
en fait gardes  die()  , pour clore un appel d'une ressource interne.

 


et le "header already sent " provient de la création de ton objet, qui se prends die() dans le milieu ... la page est surement stampé à ce moment.
et avec les lignes après, le stamp reçoit une deuxième page , d'ou "header déjà envoyés",
header , c'est la requete http pour le retour vers le client, c'est plein d'infos .. dont cheksum , taille de la trame ... etc.

  

c'est le premier code ou je le vois utilisé tout seul.
pour un code migré , regardes la version de Php.
et aussi les états ON / OFF d'activation des options et modules.
phpinfo();
tu a peut être un module qui n'est pas chargé ...
tu peux activer les modules avec les variables d'environements.

    



Message édité par djinto le 05-06-2021 à 00:28:59

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Cannot modify header information - headers already sent by

 

Sujets relatifs
Erreur Code:Blocks : ' cannot find ... '[Perl] Récupérer une information dans un retour SOAP
Recherche informationtab cannot be resolved to a variable
Cannot modify header information - headers already sentWarning: Cannot modify header information - headers already sent by..
Cannot modify header information - headers already sent by[PHP] Warning: Cannot modify header information - headers already...
Warning: Cannot modify header information - headers already sent bypb avec le"Cannot modify header information - RESOLU
Plus de sujets relatifs à : Cannot modify header information - headers already sent by


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR