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.
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.