Le 05/05/2012 16:50, Jean Francois Ortolo a écrit :
>
>
> Bonjour Monsieur
>
> Je n'ai plus qu'à faire un gros audit de tout mon site
>
www.pronostics-courses.fr , pour ajouter le code qui rendra à priori mon
> site, compatible avec les versions ultérieures de php.
>
Comme je l'ai dit, à moins d'être en php4, pourquoi vouloir changer de
version ?
On pourrait faire une analogie avec une voiture.
Imaginez qu'à chaque fois qu'un nouveau modèle de pièce de moteur, le
constructeur décide de l'installer mais, comme il y a un risque, à
chaque fois, on va tout contrôler pour une bonne rétro compatibilité.
Il perdrait énormément de temps (et d'argent).
C'est pareil pour un site web. On décide du "moteur" (généralement, on
essaye de prendre le dernier stable en date) et après, on y touche plus.
> A propos de la compatibilité avec php 6, qui sera en mode utf8 par défaut :
>
De mémoire, et à moins que ceci ait changé, PHP 6 a été annulé et est en
suspend. Si ce n'est plus le cas, je veux bien vos sources.
> J'ai déjà adapté mon site, pour que les fonctions de type PCRE ( exemple
> preg_split() ) soient utilisées à l'exclusion des fonctions de type
> Posix ( split() par exemple ), et aussi les accès à la base de données
> MySQL avec l'interface objet PDO, au lieu des classiques fonctions
> mysql_*().
ça ce n'est pas de l'adaptation pour php6 mais de php4 à 5. split() est
déprécié et les fonctions mysql_* ne sont plus maintenues. Au minima
pour un projet php5, il faut utiliser PDO ou mysqli (dixit la doc de PHP)
>
> Cependant, mon site est en mode ISO-8859-1, alors que dans le cas de php
> 6, la base de données sera lue et écrite en mode utf8 par défaut, les
> scripts seront interprétés en mode utf8, etc...
>
Vous confondez ici pas mal de chose.
Votre site est en iso-8859-1, soit (pas un choix très judicieux, mais
s'il date, pourquoi pas).
PHP 6 (s'il existe un jour) interprètera par défaut en utf-8 (utile
surtout pour toutes les fonctions sur les strings) mais ne modifiera pas
vos pages en UTF-8 et ne lira pas la base en UTF-8, il la lira comme
elle est réglée elle.
De plus, qui dit "mode par défaut" dit "réglable". Gage à vous, si vous
ne souhaitez pas d'UTF-8 de régler PHP et votre base en conséquence.
> D'après le PHP Manual, pour adapter mon site en mode iso, il faudrait
> modifier un certain nombre de variables système contenues éventuellement
> dans le fichier php.ini, qui définissent le mode de codage de
> caractères, pour les différentes fonctionnalités :
>
> Les fonctionnalités, devraient inclure l'interprétation des scripts en
> mode iso, la lecture/écriture des fichiers en mode iso, l'aspiration des
> pages html distantes en mode iso, etc...
>
> unicode.filesystem_encoding
> unicode.output_encoding
> unicode.script_encoding
> unicode.stream_encoding
> unicode.fallback_encoding
>
> avec, éventuellement :
>
> unicode.http_input_encoding
>
Je veux bien la source de tout ça, je ne le trouve pas dans la doc.
>
> Première question :
>
> A part une instruction de type "SET NAMES" lancée juste après la
> connexion à la Base de Données MySQL ( qui est en mode latin1 par défaut
> ), pour fixer le mode caractères à latin1 ( équivalent de ISO-8859-1 en
> vocabulaire MySQL ), serait-il possible, d'affecter ces variables
> système ci-dessus, dans un fichier .htaccess à la racine du site, avec
> la chaîne : "ISO-8859-1", et si oui, celà suffirait-il, à ce que mon
> site soit compatible PHP 6, si par ailleurs toutes ses instructions,
> seraient non deprecated, et entièrement disponibles sous PHP 6 ?
>
Idem pour la base, en latin1 par défaut signifie et même devrait être
obligatoirement réglable.
Ensuite, je ne vois pas le rapport avec le fichier .htaccess là.
Je tiens aussi à signaler que DEPRECATED ne signifie pas "supprimé" mais
"à éviter" (car risque de suppression dans les versions à venir). Par
exemple, rien ne vous empêche d'utiliser "split()". Il y aura juste une
alerte (sur la page ou/et dans les logs selon votre réglage de php.ini).
> Ou bien, y aurait-il d'autres variables système à modifier, pour
> spécifier le mode ISO ?
>
> Je comprend bien, que l'idéal, serait que je convertisse entièrement mon
> site en mode utf8, ainsi que sa base de données, ce qui serait
> théoriquement possible. Cependant, il y aurait des adaptations dans le
> cas de prise en compte de la longueur des chaînes de caractères ( avec
> la fonction substr() par exemple, largement employée par mon site ),
> aussi je pense que si je me mettais à cette traduction complète de mon
> site, ce serait un travail de Romain, et puis je ne pense pas, que même
> à terme, le fait d'utiliser le mode iso, devienne impossible.
>
A vous de voir au niveau temps. Remplacer substr() par un mb_substr()
n'est pas non plus titanesque.
Quoi qu'il en soit, je ne ferai que me répéter pour la 3ème fois mais :
Prendre en compte les versions ultérieures maintenant serait la pire
perte de temps que vous puissiez prendre car :
1- on ne peut pas deviner le devenir de PHP, les choix sont votés et les
modifications arrivent aux compte-goutte.
2- la version de PHP ne devrait être changée que pour une bonne raison
(faille de sécurité par exemple) mais jamais de plus d'une version (php
5.2.2 à php 5.2.3 par exemple)