Bonjour à tous
Je suis en train de tester avant de migrer mon Dolibarr v.17 d’un hébergement vers un autre
Cela implique aussi un changement de NDD
J’ai recopié les dossiers, avec les bons droits à priori, la BDD a été restaurée, le conf a été adapté en conséquence
Tout semble fonctionner sauf que les logos et images liées aux utilisateurs ne s’affichent pas et si j’essaie de les afficher dans un onglet, j’obtiens un message me disant me l’image (via viewimage.php) ne peut être affichée car elle contient des erreurs
J’ai tenté en supprimant l’image puis en uploadant une nouvelle, même résultat
J’ai trouvé différents posts sur le forum mais aucun ne résout mon pb
Seul changement apparent, PHP 8.1.31 au lieu de 7.3.33, mais même en repassant sur un 7.3.33 sur le nouvel hébergement, aucun changement
Bonsoir
A priori toutes les extensions nécessaires sont présentes :
Dans « Outils admin / Infos PHP », tout est coché au vert
J’ai comparé les options PHP sur les deux hébergements, et celles présentes dans l’ancien (qui affiche les images) sont bien actives dans le nouveau (qui n’affiche pas les images, avec l’erreur viewimage.php indiquée précédemment)
Quelqu’un aurait une autre idée ?
Cordialement
Eric
Bonsoir
Pas de message d’erreur en ouvrant l’image avec Bloc Note ou NotePad++
Depuis l’explorateur de fichiers du CPanel, en demandant une visu, elle s’affiche correctement
Cordialement
Eric
Quand vous arrivez la, faite un Ctrl+S et ouvrez le fichier dans bloc note.
Si Firefox n’arrive pas à l’ouvrir c’est que soit vous avez un message d’erreur, soit vous avez un ou des espaces au début du fichier.
Bonjour @ksar
Effectivement des espaces apparus en début de fichier
J’ai fait un test sur une fiche produit qui ne comportait pas d’image
Impossible de l’afficher pour les mêmes raisons, pourtant l’image au départ sur mon PC est correcte
Ca ne le fait que sur le nouvel hébergement, la même image passe bien sur l’ancien hébergement
Cela pourrait être dû à quoi ?
Je pense que je vais supprimer l’install sur le nouvel hébergement et la refaire
Même en repartant d’une install depuis le zip téléchargé depuis SourceForge, j’ai toujours ce problème d’affichage des images avec 2 espaces (saut de ligne) rajoutés au début des images et donc impossibilité d’afficher des images, que ce soit logo société, images des utilisateurs ou des produits
Je penche sur un problème de droits, ou un paramètre dans le CPanel du nouvel hébergement qui ne serait pas bon, mais pour l’instant je sèche
Si quelqu’un a une idée ?
Hébergement o2switch, install effectuée « manuellement » (PAS via Softcaculous)
Tout semble correct, à part ce problème d’image
cause 1
Vous pouvez avoir des caractères parasites en début de votre fichier viewimage.php avant la balise <?php
Typiquement une entête BOM (byte order mark) qui peut être rajoutée si vous avez par exemple transféré vos fichiers par ftp en mode texte et non pas en mode binaire.
cause 2
Il peut y avoir une émission de caractères supplémentaires avant l’envoi des données de l’image par viewimage.php
On peut faire un test pour voir si c’est l’origine du problème en modifiant le fichier viewimage.php de la manière suivante :
En tout début de fichier juste avant la première ligne de code, rajouter l’instruction suivante suivante pour capturer l’output.
ob_start();
et ajouter l’instruction ob_end_clean(); après l’émission des headers de l’image (vers la ligne 355 - dépend de la version du fichier)
// Permissions are ok and file found, so we return it
if ($type) {
top_httphead($type);
header('Content-Disposition: inline; filename="'.basename($fullpath_original_file).'"');
} else {
top_httphead('image/png');
header('Content-Disposition: inline; filename="'.basename($fullpath_original_file).'"');
}
$fullpath_original_file_osencoded = dol_osencode($fullpath_original_file);
ob_end_clean(); // ligne à rajouter
readfile($fullpath_original_file_osencoded);
Si cela fonctionne après cela, c’est que quelque part dans le code de viewimage il y a l’émission de vos retours à la ligne qui perturbent l’affichage de l’image.
Merci @Beers
En rajoutant la capture de l’output, ça fonctionne nickel
Après il faut quand même que je trouve réellement d’où cela provient (pour éviter de devoir modifier à chaque montée de version) car j’ai l’impression avec différents tests (incluant le fait de basculer en v.20.0.3) que cela dépend en fait de la sauvegarde de ma BDD ?!?!?
Avec une BDD vierge, tout fonctionne OK (y compris en utilisant le dossier Documents récupéré de mon ancien hébergement)
Mais dès que j’efface la BDD et que je réimporte ma sauvegarde SQL, ça marche plus
Je vais retenter une nouvelle sauvegarde et un nouveau test
C’est typiquement le problème d’un fichier qui a des caractères parasites avant la balise <?php
Comme piste probable l’usage d’un éditeur de texte qui rajoute une entête BOM avant la sauvegarde.
Un fichier qu’on édite après une installation c’est le fichier conf.php, il faudrait regarder si ce fichier n’aurai pas des caractères parasites, avec un éditeur de texte qui permet d’afficher les caractères invisibles.
@Beers
Je suis également étonné de mettre en doute la BDD… mais au niveau du serveur, il n’y a eu aucun transfert effectué depuis le tout premier, ni intervention sur les fichiers images (entre autres par un éditeur de texte)
Si les fichiers images étaient corrompus dès le premier transfert (en supposant que le transfert ait été mal réalisé), cela n’aurait jamais dû fonctionner
Or mes seuls tests concluants l’ont été avec une BDD « neuve », y compris en faisant pointer le conf sur le dossier Documents initialement repris de l’ancien hébergement (et donc théoriquement relié à l’ancienne BDD)
Le problème ne survient que lorsque j’efface la BDD et que je restaure la sauvegarde SQL, sans rien toucher d’autre (le dossier Documents reste donc le même, avec les mêmes fichiers et les mêmes droits)
Mais j’l’aurais un jour, j’l’aurais… (enfin j’trouverais pour ceux qui n’ont pas la ref )
Ce ne sont pas les images qui sont corrompues.
Le problème peut venir de fichiers php qui ont été modifiés (tels que le fichier conf.php).
Par exemple notepad sur windows est connu pour insérer une entête BOM dans les fichiers s’il est mal configuré
Si vous voulez chercher d’où ça vient, vous pouvez déplacer l’instruction ob_start(); après la première ligne de code, puis après la deuxième etc dans viewimage.php et une fois que l’erreur apparait vous avez la ligne fautive qui doit vous permettre de remonter à la source du problème.