PHP 5.3.1 est disponible au téléchargement, le langage de programmation fait peau neuve
L'équipe de developpement de PHP vient d'annoncer la sortie tant attendue de PHP 5.3.1.
Cette version est une sortie de maintenance au sein de la série 5.3, et elle apporte de nombreux correctifs de bugs.
Un guide de migration, pour les utilisateurs qui feraient une mise à jour depuis leur version 5.2, est disponible. De même, tous les changements apportés par cette nouvelle mouture sont détaillés dans le ChangeLog.
Voici les principales caractéristiques et nouveautés incluses dans PHP 5.3.1 :
Security Enhancements and Fixes in PHP 5.3.1:
Added "max_file_uploads" INI directive, which can be set to limit the number of file uploads per-request to 20 by default, to prevent possible DOS via temporary file exhaustion.
Added missing sanity checks around exif processing.
Fixed a safe_mode bypass in tempnam().
Fixed a open_basedir bypass in posix_mkfifo().
Fixed bug #50063 (safe_mode_include_dir fails).
Fixed bug #44683 (popen crashes when an invalid mode is passed).
Key Bug Fixes in PHP 5.3.1 include:
Fixed crash in com_print_typeinfo when an invalid typelib is given.
Fixed crash in SQLiteDatabase::ArrayQuery() and SQLiteDatabase::SingleQuery() when calling using Reflection.
Fixed crash when instantiating PDORow and PDOStatement through Reflection.
Fixed bug #49910 (no support for ././@LongLink for long filenames in phar tar support).
Fixed bug #49908 (throwing exception in __autoload crashes when interface is not defined).
Around 100 other bug fixes
Added "max_file_uploads" INI directive, which can be set to limit the number of file uploads per-request to 20 by default, to prevent possible DOS via temporary file exhaustion.
Added missing sanity checks around exif processing.
Fixed a safe_mode bypass in tempnam().
Fixed a open_basedir bypass in posix_mkfifo().
Fixed bug #50063 (safe_mode_include_dir fails).
Fixed bug #44683 (popen crashes when an invalid mode is passed).
Key Bug Fixes in PHP 5.3.1 include:
Fixed crash in com_print_typeinfo when an invalid typelib is given.
Fixed crash in SQLiteDatabase::ArrayQuery() and SQLiteDatabase::SingleQuery() when calling using Reflection.
Fixed crash when instantiating PDORow and PDOStatement through Reflection.
Fixed bug #49910 (no support for ././@LongLink for long filenames in phar tar support).
Fixed bug #49908 (throwing exception in __autoload crashes when interface is not defined).
Around 100 other bug fixes
J’ai dernièrement eu l’occasion de rencontrer Hank JANSSEN de Microsoft qui a participé, avec Pierre JOYE à la publication de PHP 5.3 sous Windows. On ne s’en rend pas compte car peu de communication a été faite autour mais PHP 5.3 en environnement Windows est un véritable reconstruction du projet. Un travail important de mise à jour et de modification a été accompli et est toujours en cours.
La branche PHP 5.3 a introduit un nombre important de nouvelles fonctionnalités. La plupart d’entre nous les connaissent maintenant et si ce n’est toujours pas le cas, vous pouvez les consulter sur le site http://php.net/releases/5_3_0.php.
Ce que l’on sait moins, c’est que que cette version a été l’occasion pour les développeurs travaillant sur la version Windows de refondre complétement le projet, reconstruire une plateforme de compilation industrialisée et facile à reproduire et surtout, faire de la version Windows une véritable distribution optimisée pour cet environnement et non plus un simple portage de la version Linux.
Commençons par regarder le travail effectué sur le code de PHP en lui-même et ses dépendances. Les distributions de PHP pour Windows jusqu’à PHP 5.2 étaient basées sur un socle monté dans les années 90 et ayant très peu évoluée depuis. On y retrouvait notamment :
- des librairies n’ayant pas été mise à jour et recompilées depuis très longtemps, les plus vieux binaires identités datant de plus de 12 ans,
- des binaires dont le code source était tout simplement perdu et donc impossible à recompiler,
- un code ayant peu profité des mises à jour de sécurité dans les 10 dernières années,
- l’utilisation de librairies non prévues pour Windows et fonctionnant grâce à de l’émulation ou encore certaines reproduisant des fonctionnalités déjà présentes dans Windows sans en tirer partie,
- un code optimisé pour Windows 98!
Je ne vais rentrer dans les détails, mais tout cela a été repris, mis à jour, redéveloppé afin de le rendre plus efficace et profiter des particularités de Windows. Un long travail de plusieurs mois dont le résultat est une version optimisée pour cette plateforme, qui peut maintenant passer le PHP test suite (ce qui n’était plus le cas depuis un moment) et être considéré comme une véritable branche de PHP.
Côté plateforme de compilation, le travail effectué a été tout aussi important. La plateforme existante a tout simplement été complétement désassemblée pour être reconstruite à partir de zéro.
Autrefois basée sur un portage de la compilation Linux avec des processus adaptés pour aboutir à quelque chose qui fonctionne, la nouvelle plateforme profite elle d’une véritable industrialisation, facile à reproduire et permettant à chacun de faire des ‘build’ spécifiques à un environnement Windows donné. Les outils utilisés ont tous été actualisés et permettent de profiter de nombreuses optimisation qui n’étaient pas possibles auparavant offrant ainsi de meilleures performances à PHP.
Notons que la compilation est maintenant possible en VC9. Ok, cela ne nous sera pas d’une grande utilité tant que les binaires d’Apache ne seront pas construits également avec ce compilateur, mais il semblerait que ce soit en cours de réalisation.
Seul point noir, la nouvelle plateforme ne compile pas encore les extensions PECL. Mais le travail sur cette partie est en cours et j’espère bientôt voir réapparaître le pecl4win ou un site équivalent.
Enfin, notez qu’un site dédié à Windows existe maintenant dans les « php.net sites » :
http://windows.php.net
Pour conclure PHP 5.3 dispose maintenant d’une véritable version pour Windows avec de bien meilleures performances et des possibilités d’utilisation plus vastes. Bien sûr, je ne m’aventurerais pas à la comparer à la version Linux (je crois que je viens de lancer un troll), que ce soit en terme de qualité ou de performances, mais cette évolution reste quelque chose de très positif. L’ouverture vers toutes les plateformes est un plus pour PHP et ne peut que lui être profitable.
Source
Lire aussi : Les nouveautés de PHP 5.3