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