![]() Geek, nouvelles technologies, société et jeux vidéos! | |||||||||||||||||
Étant encore en version 1.8 d'EasyPHP et ayant marre des messages d'alerte m'indiquant la présence d'une nouvelle version des outils, je me suis pris par la main et j'ai téléchargé la dernière version d'EasyPHP contenant PHP 5.3.2i. Malheureusement tout n'est pas comme dans le monde des bisounours et je me suis confronté à quelques problèmes :
Je vais donc vous donner quelques conseils pour palier à ces petits soucis et vous aider à faire une meilleure migration vers PHP5 sur EasyPHP. Pré-requisMais avant de commencer, préparez-vous bien avec quelques manipulations et quelques outils :
Les pages ne s'affichent pas correctementPour se simplifier la vie ou tout simplement en copiant-collant du code sur le net, je me suis retrouvé avec plein de balises courtes (<?, <?=,...). La directive short_tags permet de déterminer si le serveur veut bien les reconnaître ou non. Laissez ce paramètre à false, il permettra de mettre un peu de rigueur dans votre code en spécifiant précisément quel langage vous utilisez côté serveur. Maintenant il faut remplacer tous les mini-tags par des tags normaux. Pour cela, on va utiliser notre nouvel éditeur de texte et ses fonctions d'expressions régulières. Vous avez fait la sauvegarde? On y va! Remplacement des <?L'expression régulière est "remplacer toutes les balises <?. Ouvrez donc Notepad++ et faîtes Edition > Rechercher > Fichiers dans les dossiers. Cochez le bouton "expressions régulières" et remplissez les zones de texte : Rechercher : <?
Vérifiez la liste qui vous est fournie en contrôlant tous vos langages serveurs ou autres (xml par exemple). Rajoutez éventuellement les balises non php avec leur texte long (<?xml par exemple). Remplacer par : <?php
Ajoutez un espace à la fin de l'expression de remplacement. Ne regardez pas votre code maintenant, vous allez avoir peur! J'espère que vous avez sauvegardé! Remplacement des <?=L'expression régulière est "remplacer tout le contenu entre <?= et ?> par <?php echo ... ; ?>". Attention, on a déjà remplacé les <? existants! Rechercher : <?php=(.*)?>
Remplacer par : <?php echo \1; >
Remise en forme des <? surchargésEh oui, vous allez trouver des <?phpphp ou <?phpxml restants du premier remplacement. Heureusement que vous avez mis au propre les autres balises non php avant de faire tout ça. Nous allons nous en occuper : Recherchez : <?php([a-zA-Z0-9]+)
Remplacez par : <?\1
Pour vérifier, relancez votre site pour guetter les éventuelles erreurs d'affichage. On continue? Fonctions obsolètesEn migrant j'ai eu affaire à deux groupes de fonctions obsolètes : des fonctions de session et les fonctions ereg*. Si vous tombez sur d'autres fonctions obsolètes, je vous laisse consulter la documentation PHP Les sessionsD'après les messages d'alerte, les fonctions session_register et session_unregister sont obsolètes et donc amenées à disparaître dans les prochaines versions. Le contournement est simple : Rechercher : session_register\((.*)\);
Remplacer par : $_SESSION[\1] = 0; // ou ""; si c'est du texte
Rechercher : session_unregister\((.*)\);
Remplacer par : unset($_SESSION[\1]);
Les fonctions eregLa version 5 de PHP choisit de déprécier les fonctions traitant les expressions régulières de type POSIX pour laisser place aux PCRE (Perl Compatible Regular Expression). En gros il s'agit d'expressions régulières améliorées, mais elles ont un format différent... Vous pourrez trouver toute la documentation sur le site de PHP Les PCRE ont un masque de délimitation. Par exemple : Je.*cherche
devient #Je.*cherche#
Le masque de délimitation peut être n'importe quel caractère, de préférence un qui n'est pas dans l'expression elle-même, sinon il suffit de l'échapper. #Je\#.*cherche#
Après les délimiteurs, on peut mettre un masque comme pour des options supplémentaires de recherche. Par exemple i permet de faire une recherche en ignorant la casse : #Je.*cherche#i
Pour résumer, voici les fonctions à remplacer avec un délimiteur générique :
Il vous faudra par contre ajouter les délimiteurs et surveiller la moindre expression changée pour être sûr(e) quelle corresponde bien à vos attentes. La base de donnéesApparemment déplacer les fichiers ou reparamétrer le répertoire ne suffit pas à faire fonctionner la base qui passe quand même de 4.1.9 à 5.1.49! La seule solution que j'ai trouvé pour migrer les données consiste à faire un export de l'ancienne base et un import dans la nouvelle. EncodageAttention aux formats d'exportation et d'importation notamment si vous manipulez des accents, vous devez garder le même format entre l'encodage de l'ancienne base, le fichier d'exportation et le format de la nouvelle base. Pour passer d'un format à l'autre, servez-vous du fichier et convertissez le avec Notepad++ (Format > Convertir en UTF-8/ANSI). Passez au mysqliPHP5 propose une nouvelle librairie, mysqli, qui intègre quelques fonctionnalités supplémentaires en plus de la librairie mysql de base. Par exemple l'encodage est mieux supporté et il est possible d'utiliser une instance de connexion sous la forme d'un objet. Assurez-vous quand même que votre hébergeur final aura cette extension ou au pire demandez-la lui. Pour partir du plus simple et migrer rapidement, il faudrait remplacer l'ensemble des fonctions de votre code par des fonctions mysqli au lieu de définir un objet d'instance. Je n'ai pour ma part pas eu le besoin de passer en mysqli, mais la documentation de PHP stipule qu'il est intéressant pour un nouveau projet d'utiliser cette bibliothèque. BilanTous les points que j'ai rencontré plus haut sont ceux qui m'ont bloqué personnellement dans ma migration. Il se peut donc que vous trouviez des écarts, notamment lors du remplacement de texte. Si vous vous trompez, récupérez la dernière sauvegarde de votre fichier et comparez vos modifications avec la duplication des vues. Grâce à ce tutoriel, vous avez pu en savoir plus sur les expressions régulières et sur certains réglages de votre serveur Apache-PHP-Mysql. Vérifiez quand même la configuration de votre futur serveur avant de mettre en place vos modifications! + Sources des images Vous pouvez aussi lire :
![]() Rédacteur et programmeur principal du Goufablog. Ingénieur de profession et avide de connaissances technologiques et scientifiques il partage son savoir à travers ces différents articles. Plus de renseignements sur la page de contact. ![]()
|
![]() |
||||||||||||||||
|
Votre avis?