|
CMS -
JOOMLA - Erreur « headers
already sent »
Paniqué, un de mes amis m’a appelé. Il avait changé le mot de passe de
sa base de données, et voici le message d’erreur qu’il avait en haut de son
écran : Warning: session_start() [function.session-start]:
Cannot send session cookie - headers already sent by (output started at
/homez.305/LoginFTP/www/canaris-jaunes/configuration.php:1)
in /homez.305/LoginFTP/www/canaris-jaunes/libraries/joomla/session/session.php
on line 423 Warning: session_start() [function.session-start]:
Cannot send session cache limiter - headers already sent (output started at
/homez.305/LoginFTP/www/canaris-jaunes/configuration.php:1)
in /homez.305/LoginFTP/www/canaris-jaunes/libraries/joomla/session/session.php
on line 423 Warning: Cannot modify header information - headers
already sent by (output started at /homez.305/LoginFTP/www/canaris-jaunes/configuration.php:1) in
/homez.305/LoginFTP/www/canaris-jaunes/libraries/joomla/session/session.php on
line 426 headers already sent - un peu de technique :
La plupart des sites Internet utilisent des sessions pour conserver les
informations, envoyées par le visiteur, d’une page à l’autre. La gestion des sessions commence toujours par la commande PHP : session_start(); Cette commande doit être exécutée tout au début du traitement d’une page
et avant que le processus ait écrit un seul caractère dans le buffer HTML de la
page. Si un seul caractère, quel qu’il soit, est envoyé dans le buffer HTML de
la page, la commande session_start(); verra qu’elle n’est pas la première à
passer et vous affichera un magnifique message « … Cannot
send session cookie - headers already
sent … ». Quand ce type d’erreur apparait sur un site Internet, il est extrêmement
difficile au développeur de trouver la cause de l’erreur, car elle peut se
trouver dans n’importe quel script utilisé et surtout concerner des caractères
invisible de prime abord et qui se trouvent avant le massage en mode PHP.
C'est-à-dire avant la ligne de commande « < ?php »
dans un script PHP. headers already sent - découverte de la cause de l’erreur :
La tâche du développeur a été facilitée aujourd’hui du fait qu’un seul
paramètre avait changé entre le moment « Correct » et le moment
« Erreur ». Séquence qui a permis de cerner ce problème : · Transfert de JOOMLA sur un hébergement mutualisé OVH. · Configuration initiale de JOOMLA par l’exécution du script wwwdomaine.com/installation/index.php. · Affichage de la page d’accueil du site : état correct 1. Avec Filezilla transfert de « OVH à Micro » du fichier configuration.php 2. Sur le micro, pour le du fichier configuration.php, avec notepad.exe · Ouverture du fichier · Sauvegarde et enregistrement du fichier · Fermeture du fichier 3. Avec Filezilla transfert de « Micro à OVH » du fichier configuration.php · Affichage de la page d’accueil du site : état erreur headers already sent - analyse de la cause de l’erreur :
A première vue la consultation du fichier configuration.php, avec notepad.exe ne montre aucun problème. Il m’a fallu faire appel à un éditeur hexadécimal de texte pour faire apparaître la cause réelle de l’erreur, que voici :
On peut constater que trois caractères non visibles sous notepad ont été insérés avant la commande de passage au PHP : « < ?php ». Il ne restait plus qu’à fabriquer le petit outil qui me corrigerait proprement cette anomalie. J’ai donc créé l’outil
« Clean_PHP_File.exe » qui supprime proprement tous les caractères
situés avant « < ?php ». headers already sent - Téléchargement de
« Clean_PHP_File.exe » et utilisation :
Traitement : Télécharger dans Outils WordetWeb le fichier « Clean_PHP_File.exe » et le mettre dans le dossier : ·
Windows
64 bits : C:\Program Files (x86) ·
Windows
32 bits : C:\Programmes ou C:\Program Files Aller dans dossier contenant le fichier « configuration.php » de JOOMLA puis : · Passer la souris sur le fichier « configuration.php », · Bouton droit : « Ouvrir avec », · Sélectionner « Choisir le programme par défaut », · Décocher « Toujours utiliser le programme sélectionné … », · Bouton « Parcourir », · Sélectionner le fichier « Clean_PHP_File.exe », · Terminer en cloquant sur « OK ». · Le fichier « configuration.php » est nettoyé.
|
|