Problème d'accents après migration php 5.3 vers 5.4
Fermé
GrandjeanM9
Messages postés
11
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
1 janvier 2016
-
20 sept. 2015 à 10:32
Utilisateur anonyme - 25 sept. 2015 à 12:07
Utilisateur anonyme - 25 sept. 2015 à 12:07
A voir également:
- Problème d'accents après migration php 5.3 vers 5.4
- Migration windows 7 vers windows 10 - Guide
- Easy php - Télécharger - Divers Web & Internet
- Transferer photo android vers pc - Guide
- Qwerty vers azerty - Guide
- Faststone capture 5.3 gratuit français - Télécharger - Capture d'écran
4 réponses
Salut,
Une piste de ce côté là :
http://php.net/manual/fr/function.mysql-real-escape-string.php
Avec les autres fonctions dépréciées/obsolètes du langage cela peut expliquer.
L'interclassement étant sur la BD je doute qu'il s'agisse de cela.
Par contre je sais d'expérience que les fonctions de conversions/sécurité des caractères posent problèmes d'une version à l'autre du langage.
Les fonctionnalités dépréciés étant remplacés par mieux et pour régler des problèmes c'est un mieux sauf que ça fait mal sur le coup.
D'où l'intérêt d'utiliser le pattern MVC :)
Une piste de ce côté là :
http://php.net/manual/fr/function.mysql-real-escape-string.php
Avec les autres fonctions dépréciées/obsolètes du langage cela peut expliquer.
L'interclassement étant sur la BD je doute qu'il s'agisse de cela.
Par contre je sais d'expérience que les fonctions de conversions/sécurité des caractères posent problèmes d'une version à l'autre du langage.
Les fonctionnalités dépréciés étant remplacés par mieux et pour régler des problèmes c'est un mieux sauf que ça fait mal sur le coup.
D'où l'intérêt d'utiliser le pattern MVC :)
dugenou
Messages postés
6087
Date d'inscription
mercredi 19 janvier 2005
Statut
Contributeur
Dernière intervention
30 juillet 2021
1 451
20 sept. 2015 à 12:13
20 sept. 2015 à 12:13
Bonjour,
Une mise à jour de Xoops serait peut-être suffisante ?
Une mise à jour de Xoops serait peut-être suffisante ?
GrandjeanM9
Messages postés
11
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
1 janvier 2016
21 sept. 2015 à 21:56
21 sept. 2015 à 21:56
Bonsoir,
le problème c'est que j'ai pas mal divergé de certains modules xoops d'origines pour faire des modifs perso et je crains que l'upgrade ne fasse plus de mal que de bien...
le problème c'est que j'ai pas mal divergé de certains modules xoops d'origines pour faire des modifs perso et je crains que l'upgrade ne fasse plus de mal que de bien...
animostab
Messages postés
2829
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
11 novembre 2019
738
20 sept. 2015 à 14:55
20 sept. 2015 à 14:55
Salut
quitte a faire une transition autant le faire vers php5.6 (la dernière version dispo sur ovh)
et mettre a jour xoops
https://www.frxoops.org/modules/TDMDownloads/singlefile.php?lid=234
si php5.6 pose problème utiliser 5.5 (configurer avec ovhconfig ou htaccess)
quitte a faire une transition autant le faire vers php5.6 (la dernière version dispo sur ovh)
et mettre a jour xoops
https://www.frxoops.org/modules/TDMDownloads/singlefile.php?lid=234
si php5.6 pose problème utiliser 5.5 (configurer avec ovhconfig ou htaccess)
GrandjeanM9
Messages postés
11
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
1 janvier 2016
21 sept. 2015 à 22:02
21 sept. 2015 à 22:02
Bonsoir animostab,
merci pour tes conseils. Me j'avoue que j'y ai pensé. mais quand j'ai vu le nombre de modifs à faire dans chaque migration, et vu le temps que j'ai passé à faire le passage vers 5.4, j'ai pris un peu peur d'aller plus loin.
je pense que je passerai à 5.6 tot ou tard, mais vu que je ne me sens pas suffisament compétent, je préfère y aller étape par étape. Tu veux dire que 5.4 pose des problème connus côté accents, qui sont résolus par 5.6 ?
merci pour tes conseils. Me j'avoue que j'y ai pensé. mais quand j'ai vu le nombre de modifs à faire dans chaque migration, et vu le temps que j'ai passé à faire le passage vers 5.4, j'ai pris un peu peur d'aller plus loin.
je pense que je passerai à 5.6 tot ou tard, mais vu que je ne me sens pas suffisament compétent, je préfère y aller étape par étape. Tu veux dire que 5.4 pose des problème connus côté accents, qui sont résolus par 5.6 ?
animostab
Messages postés
2829
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
11 novembre 2019
738
Modifié par animostab le 22/09/2015 à 00:58
Modifié par animostab le 22/09/2015 à 00:58
5.4 comme 5.6 ne posent pas de problème d'accents
mais dire a ton serveur -- utilise 5.4 alors que tu veux executer des script 5.3 obsolètes ca c'est un problème
as tu des messages d'erreur sur ta page ?
pour activer les messages d'erreurs avec htaccess
http://vadebaco.com
sinon il me semble qu'ovh ai une procédure pour passer en mode développement avec ovh.config et afficher les warning php
tu dis "aucun texte quand des accents sont dans la base de donnée" c'est bien ca ? ...
ce doit être une fonction de php devenue obsolète (voir message de YangFFIV)
Je ne connais pas xoops mais
tu devrais mettre à jour xoops dont la dernière version marche avec php 5.5+
le problème vient sans doute que
1) tu utilise une ancienne version de xoops qui possède des scripts php 5.3 ou inférieur
2) tu configure ton serveur pour qu'il utilise une version de php supérieure a php 5.3
--> résultat des scripts php de xoops sont obsolètes.
si c'était une simple erreur de charset (base, table ou page) le texte s'afficherait mais pas les accents (points d'interrogation ou symboles bizarres)
ou bien tu as bidouillé trop de trucs dans tes modules
essaie quand meme la mise a jour xoops mais fait une sauvegarde avant au cas ou
de toute façon il faudra bien
1) mettre a jour xoops ne serait ce que pour des problèmes de sécurité
2) utiliser un php non obsolète pris en charge par ton hebergeur
3) et que les 2 soit compatibles
Bon courage
mais dire a ton serveur -- utilise 5.4 alors que tu veux executer des script 5.3 obsolètes ca c'est un problème
as tu des messages d'erreur sur ta page ?
pour activer les messages d'erreurs avec htaccess
http://vadebaco.com
sinon il me semble qu'ovh ai une procédure pour passer en mode développement avec ovh.config et afficher les warning php
tu dis "aucun texte quand des accents sont dans la base de donnée" c'est bien ca ? ...
ce doit être une fonction de php devenue obsolète (voir message de YangFFIV)
Je ne connais pas xoops mais
tu devrais mettre à jour xoops dont la dernière version marche avec php 5.5+
le problème vient sans doute que
1) tu utilise une ancienne version de xoops qui possède des scripts php 5.3 ou inférieur
2) tu configure ton serveur pour qu'il utilise une version de php supérieure a php 5.3
--> résultat des scripts php de xoops sont obsolètes.
si c'était une simple erreur de charset (base, table ou page) le texte s'afficherait mais pas les accents (points d'interrogation ou symboles bizarres)
ou bien tu as bidouillé trop de trucs dans tes modules
essaie quand meme la mise a jour xoops mais fait une sauvegarde avant au cas ou
de toute façon il faudra bien
1) mettre a jour xoops ne serait ce que pour des problèmes de sécurité
2) utiliser un php non obsolète pris en charge par ton hebergeur
3) et que les 2 soit compatibles
Bon courage
GrandjeanM9
Messages postés
11
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
1 janvier 2016
>
animostab
Messages postés
2829
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
11 novembre 2019
22 sept. 2015 à 20:37
22 sept. 2015 à 20:37
Bonsoir,
Je n'ai pas de messages d'erreur en mode developement dans ovhconfig. Je pense effectivement que je vais faire évoluer mon xoops, mais je n'aurai pas trop le temps de me lancer la dedans pour le moment malheureusement.
En tout cas merci pour tes conseils. Je vais essayer la solution ci dessous en priorité...
Je n'ai pas de messages d'erreur en mode developement dans ovhconfig. Je pense effectivement que je vais faire évoluer mon xoops, mais je n'aurai pas trop le temps de me lancer la dedans pour le moment malheureusement.
En tout cas merci pour tes conseils. Je vais essayer la solution ci dessous en priorité...
Utilisateur anonyme
Modifié par le père. le 22/09/2015 à 08:28
Modifié par le père. le 22/09/2015 à 08:28
Bonjour
Je suis aussi tombé récemment sur un problème de textes qui ne s'affichaient plus en passant de PHP 5.3 à 5.4 sur un site encodé en iso-8859-1, ce qui est probablement ton cas si tes tables sont en latin1_swedish_ci.
Mon problème venait de la fonction htmlspecialchars dont un des paramètres a changé de valeur par défaut au fil des versions de php. Je crois que htmlentities présente le même problème.
Jusqu'à 5.3, le paramètre optionnel "encoding" valait par défaut "iso-8859-1". Je n'avais mis aucune valeur pour ce paramètre.
En PHP5.4 et 5.5, la valeur par défaut est UTF-8. Et là, si on donne en entrée une chaîne qui contient des caractères incorrects, la sortie est une chaine vide. Et on n'affiche plus rien du tout de tout ce qui passe par cette fonction. Rappel : une lettre accentuée encodée en iso-8859-machin est un caractère incorrect pour l'utf8.
En PHP 5.6, la valeur par défaut a encore changé, elle dépend du fichier de configuration php.ini.
La solution a été de reprendre tous les appels à htmlspeciachars et d'ajouter le bon encodage en troisième paramètre :
Comme ça, on n'est plus tributaire des changements de version.
Je suis aussi tombé récemment sur un problème de textes qui ne s'affichaient plus en passant de PHP 5.3 à 5.4 sur un site encodé en iso-8859-1, ce qui est probablement ton cas si tes tables sont en latin1_swedish_ci.
Mon problème venait de la fonction htmlspecialchars dont un des paramètres a changé de valeur par défaut au fil des versions de php. Je crois que htmlentities présente le même problème.
Jusqu'à 5.3, le paramètre optionnel "encoding" valait par défaut "iso-8859-1". Je n'avais mis aucune valeur pour ce paramètre.
En PHP5.4 et 5.5, la valeur par défaut est UTF-8. Et là, si on donne en entrée une chaîne qui contient des caractères incorrects, la sortie est une chaine vide. Et on n'affiche plus rien du tout de tout ce qui passe par cette fonction. Rappel : une lettre accentuée encodée en iso-8859-machin est un caractère incorrect pour l'utf8.
En PHP 5.6, la valeur par défaut a encore changé, elle dépend du fichier de configuration php.ini.
La solution a été de reprendre tous les appels à htmlspeciachars et d'ajouter le bon encodage en troisième paramètre :
$affichage=htmlspecialchars($databdd,ENT_COMPAT,"ISO-8859-1");
Comme ça, on n'est plus tributaire des changements de version.
GrandjeanM9
Messages postés
11
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
1 janvier 2016
22 sept. 2015 à 20:44
22 sept. 2015 à 20:44
Bonsoir,
effectivement dans ma recherche j'avais déjà vu quelque chose comme ça, mais moins bien expliqué :-)
Je crois que je vais tenter cette modif en priorité,
merci beaucoup
je vous tiens au courant du résultat..
effectivement dans ma recherche j'avais déjà vu quelque chose comme ça, mais moins bien expliqué :-)
Je crois que je vais tenter cette modif en priorité,
merci beaucoup
je vous tiens au courant du résultat..
GrandjeanM9
Messages postés
11
Date d'inscription
mercredi 18 septembre 2013
Statut
Membre
Dernière intervention
1 janvier 2016
24 sept. 2015 à 06:48
24 sept. 2015 à 06:48
Bonjour,
effectivement c'était la bonne solution.
J'ai remplacé
par
et à un autre endroit:
par
Merci à tous pour votre aide et vos conseils
Je vais aussi évoluer rapidement vers php 5.6 c'est plus sûr.
effectivement c'était la bonne solution.
J'ai remplacé
htmlentities($string)
par
htmlentities($string, ENT_COMPAT, "ISO-8859-1")
et à un autre endroit:
htmlspecialchars($text, ENT_QUOTES)
par
htmlspecialchars($text, ENT_QUOTES | ENT_COMPAT, 'ISO-8859-1')
Merci à tous pour votre aide et vos conseils
Je vais aussi évoluer rapidement vers php 5.6 c'est plus sûr.
21 sept. 2015 à 21:54