Analyse de la compatibilité d'une application PHP
+
Par Remi le vendredi 25 mars 2011, 17:49 - RPM - Lien permanent
Lors du développement d'une application PHP, ou lors de son empaquetage, il est souvent utile de vérifier la compatibilité PHP, la liste des extensions utilisées, etc.
La commande pci, fournie par l'extension PHP_CompatInfo me semble désormais dépréciée.
Laurent Laville, dans son dépôt Bartlett propose une version 2 (actuellement en 2.0.0RC3), totalement récrite, qui me semble très prometteuse.
J'essaie de collaborer avec lui, notamment afin de fournir une référence des extensions aussi complète que possible.
Les RPM sont déjà disponibles dans le dépôt remi pour fedora et enterprise linux (php-channel-bartlett, php-bartlett-PHP-Reflect et php-bartlett-PHP-Compatinfo). Ils devraient être rapidement soumis à revue pour les dépôts officiels.
Pour l'installer, comme toujours :
yum --enablerepo=remi install php-bartlett-PHP-CompatInfo
La documentation sur le site est en cours de mise à jour. En attendant, vous pouvez consulter le fichier HOWTO.txt livré avec.
Voici un rapide petit tour de l'outil.
$ phpci --version
phpci version 2.0.0RC3.
Analyse de la version de PHP nécessaire à une application
$ phpci print --recur /usr/share/phpMyAdmin
77 / 77 [+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>] 100.00%
PHP COMPAT INFO REPORT SUMMARY
-------------------------------------------------------------------------------
FILES EXTENSIONS INTERFACES CLASSES FUNCTIONS CONSTANTS
-------------------------------------------------------------------------------
BASE: /usr/share/phpMyAdmin
-------------------------------------------------------------------------------
DIR.:
webapp.php 2 0 1 3 2
...
-------------------------------------------------------------------------------
A TOTAL OF
24 EXTENSION(S) 7 INTERFACE(S) 192 CLASSE(S) 903 FUNCTION(S) 259 CONSTANT(S)
WERE FOUND IN 490 FILE(S)
WITH CONDITIONAL CODE LEVEL 55
REQUIRED PHP 5.3.0 (MIN)
-------------------------------------------------------------------------------
Time: 0 seconds, Memory: 13.00Mb
-------------------------------------------------------------------------------
Une analyse des extensions utilisées
$ phpci print --report extension --recur /usr/share/phpMyAdmin
Bon, là, faut que je trouve pour avoir juste le résumé.
Avoir la liste des extensions connues :
$ phpci list-extensions
-------------------------------------------------------------------------------
PHP COMPAT INFO EXTENSIONS REFERENCE
-------------------------------------------------------------------------------
EXTENSIONS EXTENSION VERSION
-------------------------------------------------------------------------------
Core 4.0.0
date 4.0.0
ereg 4.0.0 5.3.0
libxml 5.1.0
openssl 4.0.4
pcre 4.0.0
zlib 1.1 4.0.0
bz2 4.0.4
calendar 4.0.0
ctype 4.0.4
hash 1.0 5.1.2
filter 0.11.0 5.2.0
ftp 4.0.0
gettext 4.0.0
gmp 4.0.4
SPL 0.2 5.0.0
iconv 4.0.5
pcntl 4.1.0
session 4.0.0
standard 4.0.0
shmop 4.0.0
SimpleXML 0.1 5.0.0
sockets 4.1.0
tokenizer 0.1 4.2.0
xml 4.0.0
bcmath 4.0.0
curl 4.0.2
dom 20031129 5.0.0
enchant 1.1.0 5.3.0
fileinfo 1.0.5-dev 4.0.0
gd 4.0.0
imap 4.0.0
json 1.2.1 5.2.0
mbstring 4.0.6
mysql 1.0 4.0.0
mysqli 0.1 5.0.0
PDO 1.0.4dev 5.1.0
pgsql 4.0.0
SQLite 2.0-dev 5.0.0
wddx 4.0.0
xmlreader 0.1 5.0.0
xmlwriter 0.1 5.1.2
xsl 0.1 5.0.0
xdebug 2.1.0 5.2.0
-------------------------------------------------------------------------------
A TOTAL OF 44 EXTENSIONS WERE FOUND
-------------------------------------------------------------------------------
Time: 0 seconds, Memory: 9.00Mb
-------------------------------------------------------------------------------
Cette liste devrait s'étoffer avant la version finale.
Voila, je vous laisse découvrir cet outil, et je compte sur vos retours.
Commentaires
Juste deux petites choses par rapport à ce que viens de dire Remi.
1. l' option de récursivité n'est pas --recur mais --recursive (dans sa version longue) et -R (dans sa version courte)
2. La liste complète des extensions actuellement supportée s'obtient grâce à la commande suivante
$ phpci list-references
La différence avec list-extensions, réside dans le fait que :
list-references donne toutes les extensions chargées ou non sur le système (avec un L en préfixe pour indiquer celles qui sont chargées)
list-extensions ne donne que les extensions chargées
Merci Remi pour cette présentation
Paquets soumis pour revue
Nouveaux RPM :
Les RPM des versions finales (PHP_Reflect 1.0.0 et PHP_CompatInfo 2.0.0) sont dans le dépôt.