Pour son offre d'hébergement gratuit, Free propose par défaut la version 4 de PHP. Le présent site l'utilise depuis toujours pour publier des contenus toujours plus fournis au fil des années. Seulement voilà, avec l'obsolescence des logiciels et l'évolution des standards du web, il est devenu nécessaire d'opérer de profonds changements techniques qui n'apportent rien aux visiteurs et qui ne me rapportent rien de visible.
La chance d'utiliser un site web maison codé à la main et avec amour est qu'il est aisé de faire de gros changements sans rien trop casser, mais au coût d'une accaparation élevée de temps. J'aurais pu utiliser un content management system (CMS) avec tous les ennuis de dépendances et de sécurité que ça implique, ou bien faire correctement du premier coup. A posteriori, cette dernière affirmation manque de nuance, car elle omet le contexte de 2007.
Le premier chantier en 2008 a été l'écriture du site en PHP en respectant le format XHTML. Le site n'a vraiment pas beaucoup changé : l'image principale est la même et le menu latéral a disparu.
Le deuxième chantier en 2009 a été la normalisation de la mise en page via les feuilles de style en cascade (CSS). L'idée était de maximiser la thématisation du site sans avoir à modifier le code des pages. Si vous cliquez sur le bouton d'impression, vous verrez l'effet de cette évolution.
Le troisième chantier en 2010 a été la mobilité. L'irruption quasi maladive des téléphones et des tablettes dans le monde a rendu nécessaire l'affichage épuré en pleine largeur, alors que j'ai toujours souhaité montrer une partie de l'arrière-plan (un plan astronomique partiel de l'hémisphère sud). Le chantier CSS a beaucoup facilité la tâche puisqu'il a simplement fallu définir le CSS applicable aux appareils mobiles. Je n'avais même pas de smartphone à l'époque, et tout avait été fait sur ordinateur.
Le quatrième chantier en 2011 tenait plus de la mondialisation. Le latin-15 permet d'écrire le Français avec le signe de l'euro (€). Mais pour supporter des citations étrangères, des commentaires stylisés ou plus simplement les derniers émoticônes de l'Unicode, il fallait utiliser un autre encodage de caractères. L'UTF-8 a été appliqué à tous les fichiers du site, puis à la base de données.
Pendant plusieurs années, le site n'a pas évolué techniquement. Ce fut une période d'écriture de nouveaux petits logiciels et d'articles.
Et pourtant, un cinquième chantier a eu lieu en ce jour de 2019 : la migration vers PHP... 5 !
Comme souvent, le besoin a surgi un peu par hasard à l'occasion de l'écriture d'un petit logiciel de traitement des spams. Comme il est très petit, l'exercice était de voir comment utiliser les nouvelles fonctions MySQLi. C'était sans compter que ce n'était pas qu'une simple évolution, mais un remplacement rendu obligatoire par PHP 5.5 ! En d'autres termes, si Free met à jour PHP, le site devient caduque instantanément. En fait, et c'est dommage de le découvrir si tard, il est possible depuis 2015 au moins d'activer PHP 5 sans changer de serveur en complétant le fichier .htaccess avec une instruction spécifique à Free. Mais avant de basculer, il faut faire quelques ajustements.
L'exercice n'est en réalité pas si compliqué que ça dans la mesure où il n'est pas question d'utiliser la généricité ou le déréférencement des fonctions-tableaux, c'est-à-dire de revoir l'écriture des algorithmes du site afin de les rendre encore plus compacts, élégants ou performants. Non, le challenge est d'assurer la continuité du service en corrigeant notamment les fonctions dépréciées. La disparition des fonctions mysql_* est un véritable problème avec près de 600 appels à corriger et des pages à vérifier dans toutes les configurations possibles.
La transformation a été faite d'abord sur cet outil anti-spam, puis le site a suivi le même principe. En gros, il faut changer la procédure de connexion à MySQL, puis remplacer l'appel mysql_query($query) par mysqli_query($db, $query) pour n'en citer qu'un. Ensuite, il faut savoir que PHP n'a pas été normalisé à ses débuts : l'ordre des paramètres ou le nom des fonctions ne sont pas toujours très cohérents. Heureusement, il semblerait que les noms n'aient pas changé avec PHP 5... et 7. Autrement dit, la migration PHP 5 est normalement compatible avec PHP 7.
Stratégiquement parlant, PHP 4 et 5 sont toutes les deux des versions obsolètes. Dans l'attente de la migration vers PHP 7.2 qui accompagnera au mieux l'année 2020, le site a été actualisé pour fonctionner avec les deux versions 4 et 5. Via un paramètre, on commute de MySQL à MySQLi. En cas de problème avec la version 5, on peut revenir rapidement à la version précédente le temps de corriger. Et demain, si je veux commuter vers Oracle (ça n'arrivera pas), il suffira de changer le wrapper (adaptateur). La version courante de PHP en affichée dans le pied de page.
Avec le soin constant apporté au site pendant toutes ces années, je pense qu'il est définitivement bien foutu malgré ses airs modestes. Il délivre du contenu sans chichi aux visiteurs, et chaque chantier ne devient pas une galère. Ce nouvel exercice est toujours enrichissant mais la situation fait qu'on est toujours dépendant de son hébergeur et des exigences techniques du langage.
Profitez bien de ce site remis à niveau ! Et oui, ça ne se voit pas.