Page 1 sur 1

PHP 5.6

Posté : 14 mars 2015, 11:34
par Herve_be
Bonjour,
Je rencontre plusieurs problèmes avec la mise à niveau 5.6 de mon serveur.

1) UTF-8 est la nouvelle valeur par défaut du charset; conséquence : tous les caractères accentués sont remplacés par des �.
J'ai la solution : ajouter header('Content-Type: text/html; charset=iso-8859-1'); dans chaque module php
la difficulté est que j'ai plus de 200 fichiers à modifier; je cherche une solution globale.
Mon hébergeur m'a demandé d'ajouter AddDefaultCharset ISO-8859-1 dans .htaccess mais ça ne fonctionne pas.

2) ce fichier http://www.rudyv.be/VTT/Graph.php qui crée un fichier png ne fonctionne plus, je ne sais pas pourquoi, j'ai bien un message d'erreur "L'image ne peut être affichée car elle contient des erreurs" : quelle erreur ? ça fonctionnait avant !
Le module est appelé comme ceci

Code : Tout sélectionner

<img src="Graph.php?VTT[]=1299&Route[]=1579&VTT[]=834&Route[]=1004&VTT[]=1173&Route[]=916&VTT[]=1505&Route[]=815&VTT[]=1227&Route[]=3357&VTT[]=1329&Route[]=2848&VTT[]=897&Route[]=1103&VTT[]=1523&Route[]=1658&VTT[]=1700&Route[]=2165&VTT[]=1818&Route[]=1157&VTT[]=775&Route[]=279" alt="Graphique">
3) Je souhaite afficher certaines infos exif de fichiers images jpeg

Code : Tout sélectionner

$localURL = 'Temp.jpeg'; copy("DIY/".$elem.".jpg", $localURL); $exif_data = exif_read_data($localURL,0,true); $Date=$exif_data['EXIF']['DateTimeOriginal']; $Comment=$exif_data['WINXP']['Comments'];
$Date est ok
mais $Comment contient ????????????????????????????????????

Et probablement encore d'autres problème alors que tout fonctionnait parfaitement avec l'ancienne version.
Merci d'avance pour votre aide

Re: PHP 5.6

Posté : 14 mars 2015, 18:31
par @rthur
Bonjour,
Je rencontre plusieurs problèmes avec la mise à niveau 5.6 de mon serveur.

1) UTF-8 est la nouvelle valeur par défaut du charset; conséquence : tous les caractères accentués sont remplacés par des �.
J'ai la solution : ajouter header('Content-Type: text/html; charset=iso-8859-1'); dans chaque module php
la difficulté est que j'ai plus de 200 fichiers à modifier; je cherche une solution globale.
Mon hébergeur m'a demandé d'ajouter AddDefaultCharset ISO-8859-1 dans .htaccess mais ça ne fonctionne pas.
Ça devrait fonctionner pourtant mais sans connaitre la configuration de ton serveur, difficile de savoir précisément ce qui bloque.
La meilleure solution étant que tu insistes auprès de ton hébergeur pour avoir une solution qui fonctionne.
Sinon il existe différentes directives qui peuvent forcer le charset via un htaccess, voici une page qui les liste : http://www.askapache.com/htaccess/setti ... ccess.html
2) ce fichier http://www.rudyv.be/VTT/Graph.php qui crée un fichier png ne fonctionne plus, je ne sais pas pourquoi, j'ai bien un message d'erreur "L'image ne peut être affichée car elle contient des erreurs" : quelle erreur ? ça fonctionnait avant !
Regarde dans ton script, tu dois avoir une fonction header() qui force le mime-type à image/png.
Met en commentaire cette fonction afin que ton navigateur n'essaye plus d'afficher ce script comme une image et tu verras apparaitre un message d'erreur PHP qui s'affiche avant le contenu binaire de ton image et donc la rend illisible pour ton navigateur.

Voici le message d'erreur :

Code : Tout sélectionner

Strict Standards: mktime(): You should be using the time() function instead in /customers/e/a/4/rudyv.be/httpd.www/VTT/Graph.php on line 10

3) Je souhaite afficher certaines infos exif de fichiers images jpeg

Code : Tout sélectionner

$localURL = 'Temp.jpeg'; copy("DIY/".$elem.".jpg", $localURL); $exif_data = exif_read_data($localURL,0,true); $Date=$exif_data['EXIF']['DateTimeOriginal']; $Comment=$exif_data['WINXP']['Comments'];
$Date est ok
mais $Comment contient ????????????????????????????????????
Probablement un soucis d'encodage de caractère.

Une piste que j'ai trouvé dans la doc PHP (mais pas testé):
ini_set('exif.encode_unicode', 'UTF-8');

Re: PHP 5.6

Posté : 14 mars 2015, 19:09
par Herve_be
Merci beaucoup pour ta réponse,
1) j'ai insisté auprès de l'hébergeur mais n'ai pas de réponse, raison pour laquelle je pose la question ici;
2) en remplaçant mktime() par time() ça fonctionne à nouveau;
3) avec

Code : Tout sélectionner

ini_set('exif.encode_unicode', 'UTF-8');
au lieu de ???????, j'ai
ã €â€€ç €â€€ã”€ã€€åœ€â€€çŒ€ç”€çˆ€â€€ãˆ€ã€€ã€€ç €ã€ã€€â€€ã´€â€€ã€€â°€ã €æ´€ëˆ€ :)

Re: PHP 5.6

Posté : 18 mars 2015, 13:28
par Herve_be
Bonjour,
Pas d'autre idée pour régler mon problème Exif ?

Re: PHP 5.6

Posté : 18 mars 2015, 14:14
par @rthur
Je n'ai jamais eu à traiter des données exif pour ma part, donc pas beaucoup + d'idées...

Il faut à mon sens que tu cherches du côté du charset, Google semble avoir plusieurs pistes.
Par exemple celle-ci : http://stackoverflow.com/questions/2044 ... ncorrectly

Re: PHP 5.6

Posté : 18 mars 2015, 14:47
par Herve_be
Je me disais bien que c'était un problème de charset mais lequel ?
Toujours est-il que ceci résout le problème : un tout grand merci.

Code : Tout sélectionner

ini_set('exif.decode_unicode_motorola', 'UCS-2LE');

Re: PHP 5.6

Posté : 18 mars 2015, 19:57
par @rthur
Toujours est-il que ceci résout le problème : un tout grand merci.

Code : Tout sélectionner

ini_set('exif.decode_unicode_motorola', 'UCS-2LE');
Top ! :D

Je te laisse indiquer que le sujet est résolu en cliquant sur le bouton dédié en haut du sujet ?

Re: [RESOLU] PHP 5.6

Posté : 19 mars 2015, 09:50
par Herve_be
Je te laisse indiquer que le sujet est résolu
Pas tout à fait : le premier point ne l'est pas.
1) UTF-8 est la nouvelle valeur par défaut du charset; conséquence : tous les caractères accentués sont remplacés par des �.
J'ai la solution : ajouter header('Content-Type: text/html; charset=iso-8859-1'); dans chaque module php
la difficulté est que j'ai plus de 200 fichiers à modifier; je cherche une solution globale.
Mon hébergeur m'a demandé d'ajouter AddDefaultCharset ISO-8859-1 dans .htaccess mais ça ne fonctionne pas.
Il m'a ensuite demandé d'ajouter toujours dans .htaccess

Code : Tout sélectionner

<Files ~ "\.php?$"> Header set Content-Type "text/html; charset=ISO-8859-1" </Files>
mais j'obtiens "Internal Server Error" !
Pour info l'hébergeur est One.com

Re: [RESOLU] PHP 5.6

Posté : 19 mars 2015, 09:58
par @rthur
As-tu essayé les différentes solutions présentées dans mon lien au dessus ? (en remplaçant utf-8 par iso-8859-1 bien sur)

Re: [RESOLU] PHP 5.6

Posté : 19 mars 2015, 10:06
par Herve_be
Ton lien concerne une recherche sur exif.encode_unicode : c'est résolu, je t'en remercie.
Soit dit en passant Google est un bon outil à condition de savoir quels mots clé chercher (je n'aurait pas pensé à chercher exif encode unicode).

Ce qui n'est pas résolu est que dans tous les modules PHP tous les caractères accentués sont remplacés par des �.
Ajouter header('Content-Type: text/html; charset=iso-8859-1') dans chaque module php résout ce problème mais pas envie de modifier plus de 200 modules.
Je cherche une solution globale, probablement via .htaccess mais les solutions proposées par mon hébergeur ne fonctionnent pas.

Re: PHP 5.6

Posté : 19 mars 2015, 10:11
par @rthur

Re: PHP 5.6

Posté : 19 mars 2015, 10:43
par Herve_be
Le lien que tu donnes explique comment mettre le charset par défaut à UTF-8.
Dans la version 5.6 de PHP UTF-8 est déjà la valeur par défaut mais les caractères accentués les remplacés par �.
Si je force iso-8859-1 dans un document individuel ça fonctionne.
La seule question est donc "comment forcer iso-8859-1 pour tous les documents".
Ceci me semble plutôt être un problème de syntaxe dans .htaccess.

Re: PHP 5.6

Posté : 19 mars 2015, 16:47
par @rthur
Le lien que tu donnes explique comment mettre le charset par défaut à UTF-8.
As-tu essayé les différentes solutions présentées dans mon lien au dessus ? (en remplaçant utf-8 par iso-8859-1 bien sur)
;-)

Re: PHP 5.6

Posté : 19 mars 2015, 16:59
par Herve_be
Je viens d'essayer ceci dans .htaccess
AddDefaultCharset iso-8859-1
J'ai toujours les �