PHP propose certaines fonctionnalités sous la forme de modules. Dans les versions précompilées de PHP (par exemple les rpms fournis avec des systèmes Red Hat ou Mandrake), ces modules n’ont pas forcément été inclus dans la distribution. Voici la méthode pour les compiler afin de pouvoir les ajouter.
D’abord, vérifier que le rpm php-devel est installé :
$ rpm -qa |grep php-devel
Un ligne de ce genre :
php-devel-4.2.2-17
doit s’afficher. Si ce n’est pas le cas, c’est que php-devel n’est pas installé ; l’installer en suivant la procédure standard : télécharger le fichier php-devel-version.rpm sur le web (par exemple en utilisant http://rpmfind.net/) ou le prendre sur le cdrom d’installation, puis, en root :
# rpm -i php-devel-version.rpm
Télécharger la version de php qui a été installée par le distributeur (les anciennes distributions de php sont à l’adresse http://www.php.net/releases.php). Pour connaître la version exacte de PHP, créer un fichier dans l’arborescence du web contenant seulement le code suivant :
phpinfo();
?>
Puis charger ce fichier depuis un navigateur, en utilisant l’adresse IP du serveur (ou localhost si la connexion est faite depuis le serveur lui-même).
Décompacter le tarball dans un répertoire quelconque :
$ cd /tmp
$ tar xzvf php-version.tar.gz
Se placer dans le répertoire de l’extension désirée (ici, dbase, par exemple) :
$ cd php-version/ext/dbase
Lancer le programme phpize
Préparer la compilation :
$ ./configure
Dans certains cas, il peut être nécessaire d’ajouter des options à cette commande. Pour connaître les options possibles, utiliser la commande [1] :
$ ./configure --help
Lancer la compilation :
$ make
Installer la bibliothèque ainsi créée dans le répertoire des extensions de PHP (dans notre exemple, /usr/lib/php4/) (attention, vous devez être logé en root) :
# cp modules/*.so /usr/lib/php4/
Si vous ne connaissez pas le chemin de ce répertoire, la commande suivante devrait vous permettre de le trouver :
$ grep extension_dir /etc/php.ini
Modifier le fichier de configuration de PHP : il s’agit en général de /etc/php.ini, mais à partir de Red Hat 9, il vaut mieux créer un fichier dans /etc/php.d/ ; ce fichier porte le nom du module à charger, avec une extension .ini (dbase.ini par exemple). Le texte suivant doit être ajouté au fichier php.ini ou au fichier créé dans php.d (toujours avec l’exemple de dbase) :
extension=dbase.so
Relancer apache (en root) :
# /etc/init.d/httpd stop
# /etc/init.d/httpd start
Recharger
le fichier d’info créé au début, afin de vérifier que les nouveaux
modules ont bien été pris en compte. Si ce n’est pas le cas, le fichier
de log /var/log/httpd/error_log devrait donner des informations utiles pour corriger le problème.