Installer des modules PHP non packagés avec pecl

Le projet PHP mets à disposition des sources d'extension en plus du code de base:

  • PEAR: “PHP Extension and Application Repository” qui met à disposition du code PHP à réutiliser pour des applications (http://pear.php.net)
  • PECL: “PHP Extension Community Library” qui met à disposition des extension au langage (http://pecl.php.net)

Ces extensions ne sont pas packagées par Debian, il faut donc les installer à la main avec une étape de compilation pour PECL.

Le paquet php-pear

Pour faciliter la gestion de ces extensions, le projet PHP fournit deux programmes, pear et pecl. Ils sont disponibles dans le paquet debian php-pear, à installer:

# aptitude install php-pear

Installer des extensions PEAR

Préparatifs

Avant toute chose, il faut mettre à jour les “canaux”, qui sont les infos sur des dépots distants, on installera ensuite est packages depuis ces dépots.

# aptitude install php5-xmlrpc
# pear list-channels
Registered Channels:
====================
Channel      Summary
pear.php.net PHP Extension and Application Repository
pecl.php.net PHP Extension Community Library
__uri        Pseudo-channel for static packages
# pear channel-update pear.php.net
Retrieving channel.xml from remote server
Channel pear.php.net channel.xml is up to date
# pear channel-update pecl.php.net
Retrieving channel.xml from remote server
Channel pecl.php.net channel.xml is up to date

Un exemple

Une extension bien connu de PEAR est Auth, qui permet de faire, comme son nom l'identique de l'authentification. On va prendre cet exemple :

# pear install Auth
Did not download optional dependencies: pear/Log, pear/File_Passwd, pear/Net_POP3, pear/MDB, pear/Auth_RADIUS, pear/Crypt_CHAP, pear/File_SMBPasswd, pear/HTTP_Client, pear/SOAP, pear/Net_Vpopmaild, pecl/vpopmail, pecl/kadm5, use --alldeps to download automatically
pear/Auth can optionally use package "pear/Log" (version >= 1.9.10)
pear/Auth can optionally use package "pear/File_Passwd" (version >= 1.1.0)
pear/Auth can optionally use package "pear/Net_POP3" (version >= 1.3.0)
pear/Auth can optionally use package "pear/MDB"
pear/Auth can optionally use package "pear/Auth_RADIUS"
pear/Auth can optionally use package "pear/Crypt_CHAP" (version >= 1.0.0)
pear/Auth can optionally use package "pear/File_SMBPasswd" (version >= 1.0.0)
pear/Auth can optionally use package "pear/HTTP_Client" (version >= 1.1.0)
pear/Auth can optionally use package "pear/SOAP" (version >= 0.9.0)
pear/Auth can optionally use package "pear/Net_Vpopmaild" (version >= 0.1.0)
pear/Auth can optionally use package "pecl/vpopmail" (version >= 0.2)
pear/Auth can optionally use package "pecl/kadm5" (version >= 0.2.3)
pear/Auth can optionally use PHP extension "imap"
pear/Auth can optionally use PHP extension "saprfc"
downloading Auth-1.6.1.tgz ...
Starting to download Auth-1.6.1.tgz (56,527 bytes)
..............done: 56,527 bytes
install ok: channel://pear.php.net/Auth-1.6.1

Il propose d'installer d'autres paquets pour étendre les fonctionnalités. On pourrait donc installer MDB2 et son driver MDB2_Driver_pgsql si on veut faire de l'authentification sur une base PostgreSQL.

Il ne faut pas oublier d'installer les extensions nécessaires au fonctionnement de ces modules PEAR, par exemple php5-pgsql pour MDB2_Driver_pgsql. Toutes les extensions PHP distribuées avec le source de PHP sont disponibles dans les paquets Debian.

Gestion au quotidien

Lancer la commande pear sans arguments pour obtenir la liste des commandes disponibles. Les plus communes sont install, upgrade, uninstall et list.

La marche à suivre pour ajouter des modules PEAR facilement :

  • Aller sur http://pear.php.net et trouver l'extension qui répondra au besoin
  • Chercher sur le site de PEAR les dépendances du module, ie dans la section “Download” du module
  • Installer les extensions PHP nécessaire
  • Installer les modules PEAR avec pear install <module>

Installer des extensions PECL

Avant de commencer

La commande pecl fonctionne de la même manière que pear. Par contre, il faut installer des paquets supplémentaire pour la compilation des extensions :

# aptitude install php5-dev build-essential

Suivant les extensions, il faudra surêment installer d'autres paquets de développement.

Un exemple

Une extension sympathique est fileinfo, qui permet de trouver le type d'un fichier grâce à la libmagic. Il faut donc installer le paquet libmagic-dev pour la compilation de l'extension.

# aptitude install libmagic-dev

Dans le cas de la libmagic, il faut que la base des types MIME soit accessible dans /etc:

# cd /etc
# ln -s /usr/share/file/magic.mime

Ensuite, on installe l'extension avec pecl :

# pecl install fileinfo
downloading Fileinfo-1.0.4.tgz ...
Starting to download Fileinfo-1.0.4.tgz (5,835 bytes)
.....done: 5,835 bytes
3 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
building in /var/tmp/pear-build-root/Fileinfo-1.0.4
running: /tmp/pear/cache/Fileinfo-1.0.4/configure
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking for gcc... gcc
....
....
Build process completed successfully
Installing '/var/tmp/pear-build-root/install-Fileinfo-1.0.4//usr/lib/php5/20060613+lfs/fileinfo.so'
install ok: channel://pear.php.net/Fileinfo-1.0.4

Une nouvelle extension fileinfo.so est donc disponible sur le système. Il faut maintenant activer l'extension dans la configuration de PHP. On crée donc un fichier fileinfo.ini dans /etc/php5/conf.d/ :

extension=fileinfo.so

On peut aussi mettre les options de configuration relative à l'extension dans ce fichier.

Il faut redémarrer apache pour que la configuration soit prise en compte.

 
web/installer-des-modules-php-non-packages-avec-pecl.txt · Dernière modification: 11/12/2010 17:44 par orgrim