Comme vous le savez peut être (News sur le site officiel de PHP) il a été officiellement annoncé la fin du développement de la version 4 de PHP, la plus utilisée aujourd'hui, au profit de sa grande soeur la version 5. Cette dernière propose de nombreuses améliorations qui ont été déjà décrites sur moult sites, une recherche sur le Web vous renseignera immédiatement.
Les questions que vous vous posez donc sont probablement:
Dois je entreprendre immédiatement la migration de mon application actuelle vers PHP5 ? Dois je plutot la recoder intégralement ? Dois je plutôt la conserver sous PHP4 ? Quelle sera l'étape suivante ? PHP6 ?..
Voici un tutorial qui devrait répondre à ces questions... Attention, il n'est pas question ici d'une migration de MySQL, mais uniquement de PHP !!!
Découvrir PHP5
PHP5 n'est plus vraiment nouveau (PHP6 est déjà en route), mais encore méconnu (au moins des développeurs PHP peu avertis).
Dans un premier temps, il vous faut déterminer les raisons, les apports et les contraintes d'un changement de version de PHP. Meme si finalement votre application restera sous PHP4, fort à parier que vous aurez très prochainement à travailler avec la version 5 sur d'autres projets...
Tout d'abord et sans perdre de temps, consultez donc la documentation officielle de PHP, car c'est là que vous trouverez les informations essentielles. Préférez le documentation officielle en ligne, où figureront toujours plus de commentaires pertinents.
Vous trouverez sur ces pages la réponse à plus de 95% des erreurs ou notices que vous pourriez rencontrer lorsque vous testerez votre application avec PHP5 la première fois. Pensez donc à inclure ces pages dans vos favoris.
PHP5, une necessité ?
Ensuite, il vous faut réfléchir sur la nécessité ou le devoir de la migration... Si votre application n'est pas trop grosse et que vous disposez des ressources suffisantes, alors recodez là de 0, vous aurez tout à y gagner d'utiliser la puissance de PHP5 et votre expérience de codeurs. Mais dans bien des cas, cela reste une utopie, car le temps ou l'argent manque...
- Si votre site ou votre application est hébergée sur un serveur dont vous n'êtes pas administrateur et où se trouvent peut être d'autres applications Web (serveur mutualisé par exemple), alors fort à parier que le serveur tôt ou tard passera à PHP5. Mieux vaut donc dès à présent réfléchir comment vous allez devoir faire évoluer votre application.
- Si votre application est sur un serveur dont vous avez la charge et où ne se trouvent aucune autre application en PHP, alors la question nécessite reflexion
Premier cas de figure, votre application est en Intranet et pour diverses raisons, une version pour PHP5 serait fort couteuse. De plus l'application n'est pas amenée à évoluer considérablement... alors dans ce cas, le maintien de PHP4 peut être le meilleur choix.
Mais comme vous le voyez, les contraintes sont ici fort importantes, voire extremes.
Dans presque tous les autres cas, une version pour PHP5 sera souhaitable. Vous devrez alors agir au plus vite, car PHP5 pourrait bien intervenir plus tôt que vous ne le pensiez...
Mais voilà, que faire ? Faire évoluer l'application ou la recoder de toute pièce ?..
Migrer vers PHP5 !
Avant de prendre une décision forcément coûteuse, prenez donc le temps d'étudier soigneusement le problème en vous penchant sur votre application.
Si possible, je vous recommande tout d'abord d'installer votre application PHP4 sur un serveur tournant sur PHP5 avec une configuration par défaut, avec néanmoins une remarque d'importance: Assurez vous d'avoir les lignes suivantes dans votre fichier php.ini avec les valeurs indiquées. Si besoin éditer le fichier et redémarrez PHP.
error_reporting = E_ALL & E_STRICT display_errors = On display_startup_errors = On log_errors = On log_errors_max_len = 1024 ignore_repeated_erro
rs = Off ignore_repeated_sourc
e = Off report_memleaks = On track_errors = Off
error_reporting définit le type d'erreurs et notices à afficher. display_errors permet d'afficher les erreurs et notices à l'écran, pour votre usage donc. display_startup_errors affichera les erreurs rencontrées lorsque vous redémarrez PHP. log_errors permet de stocker toutes les erreurs et notices dans un fichier sur le serveur. log_errors_max_len peut éventuellement durant la phase des tests de migration être augmentée pour stocket toutes les erreurs, notamment si d'autres utilisateurs testent votre application. ignore_repeated_errors permet de cerner la fréquence des erreurs et notices, puisque les mêmes erreurs sont affichées à chaque fois qu'elles interviennent. ignore_repeated_source permet d'afficher les erreurs identiques survenues à différents endroits de votre application. report_memleaks pour afficher les fuites de mémoires éventuelles (sous réserve que PHP soit compilé avec l'option de débugage) track_errors permet de conserver le dernier message dans la variable $php_errormsg.
Ne soyez pas effrayé par le nombre de notices affichées, la majorité d'entre elles sont vraisemblablement facilement et rapidement corrigibles avec les connaissances acquises sur PHP5 à l'aide des quelques liens plus haut dans l'article.
Trois conséquences possibles de ces premiers tests:
- Votre application semble tourner, et le nombre de notices ou erreurs fatales est minime. C'est déjà très bon signe Le choix devrait être facile (attention toutefois de ne pas oublier tester un point critique), vous allez convertir votre application pour PHP5. Il s'agira de fixer quelques notices nouvelles ou existantes et de corriger tout ce qui peut l'être en fonction des coûts et temps alloués, pour utiliser le meilleur de PHP5 pour optimiser votre application.
- Votre application ne marche que partiellement et le nombre de messages d'erreurs ou notices est important. C'est la conséquence la moins souhaitable, car le choix sera beaucoup plus délicat, et sans connaître votre application, je ne merisquerais pas à vous pronostiquer le meilleur choix. Vérifiez toutefois que de passer la valeur de zend.ze1_compatibility_mo
de à Off (si elle était à On) ne résout pas le problème. Ce paramètre permet de prendre en compte le modèle objet de PHP4 avec PHP5. Toutefois, il serait preferable que ce paramêtre reste à Off, car il risque de disparaître sous PHP6 ou ultérieurement...
- Votre application après 2 jours acharnés (ou plus selon vos connaissances en PHP et du code de votre application) refuse radicalement de fonctionner sous PHP5... A moins que votre application ne soit un monstre, avec des lignes de codes et des fichiers sans fin... Encore une fois, vous gagnerez sur toute la ligne en la recodant proprement sous PHP5.
Selon vos méthodes et moyens de travail, il vous faut dès à présent vous pencher sur cette tâche qui assurera la pérennité de votre application... au moins jusqu'à PHP7... si vous vous tenez informé des modifications possibles de PHP6 sur certaines variables de configuration de php.ini.
L'avenir de PHP...
Alors que PHP5 voyait le jour, presque immédiatement le projet PHP6 fut lancé. Non pas que PHP5 s'annonçait alors décevant, mais bien parce que PHP6 allait apporter au moins un facteur décisif et difficilement gerable dans PHP5: le support parfait Unicode que tout le monde attend. Bien sûr d'autres points sont aussi abordés pour PHP6, mais qui ne devraient toutefois pas procéder à une révolution telle que le passage de PHP4 à PHP5.