Installation des extensions
Remarque
Contrairement aux modes d'exécution d'Apache+PHP ou Nginx+PHP, Workerman fonctionne en utilisant PHP en ligne de commande PHP CLI, et utilise un exécutable PHP différent ; le fichier php.ini utilisé peut également être différent. Ainsi, voir une extension installée en exécutant phpinfo() dans une page web ne signifie pas que l'extension correspondante est également installée pour PHP CLI.
Comment déterminer quelles extensions sont installées avec PHP CLI
Exécuter php -m listera les extensions déjà installées pour PHP CLI, avec un résultat similaire à ceci :
~# php -m
[Modules PHP]
event
posix
pcntl
...
Comment déterminer l'emplacement du fichier php.ini de PHP CLI
Lorsque nous installons une extension, il peut être nécessaire de configurer manuellement le fichier php.ini pour y ajouter cette extension. Il est donc important de confirmer l'emplacement du fichier php.ini de PHP CLI. Vous pouvez exécuter php --ini pour trouver la localisation du fichier ini de PHP CLI, avec un résultat similaire à ceci (les résultats peuvent varier selon les systèmes) :
~# php --ini
Configuration File (php.ini) Path: /etc/php8/cli
Loaded Configuration File: /etc/php8/cli/php.ini
Scan for additional .ini files in: /etc/php8/cli/conf.d
Additional .ini files parsed: /etc/php8/cli/conf.d/apc.ini,
/etc/php8/cli/conf.d/pdo.ini,
/etc/php8/cli/conf.d/pdo_mysql.ini
...
Installer des extensions pour PHP CLI (exemple d'installation de l'extension memcached)
Méthode 1 : Utiliser les commandes apt ou yum pour l'installation
Si PHP est installé via apt ou yum, les extensions peuvent également être installées via apt ou yum.
Méthode d'installation des extensions PHP avec apt sur les systèmes debian/ubuntu (l'utilisateur non root doit ajouter la commande sudo)
- Utiliser
apt-cache searchpour rechercher le paquet d'extension~# apt-cache search memcached php php-apc - Module APC (Alternative PHP Cache) pour PHP 5 php5-memcached - Module memcached pour php5 - Utiliser
apt-get installpour installer le paquet d'extension~# apt-get install -y php5-memcached Reading package lists... Done Reading state information... Done ...
Méthode d'installation des extensions PHP avec yum sur les systèmes centos
- Utiliser
yum searchpour rechercher le paquet d'extension~# yum search memcached php php-pecl-memcached - Module memcached pour php5 - Utiliser
yum installpour installer le paquet d'extension~# yum install -y php-pecl-memcached Reading package lists... Done Reading state information... Done ...Remarque :
L'utilisation d'apt ou de yum pour installer des extensions PHP configure automatiquement le fichier php.ini, permettant une utilisation immédiate après installation, ce qui est très pratique. L'inconvénient est que certaines extensions n'ont pas de paquets d'installation correspondants dans apt ou yum.
Méthode 2 : Utiliser pecl pour l'installation
Utiliser la commande pecl install pour installer l'extension.
- Installer avec
pecl install~# pecl install memcached downloading memcached-2.2.0.tgz ... Starting to download memcached-2.2.0.tgz (70,449 bytes) .... - Configurer php.ini
En exécutant php --ini pour trouver l'emplacement du fichier php.ini, puis ajoutez extension=memcached.so dans le fichier.
Méthode 3 : Compilation manuelle à partir des sources (généralement pour installer les extensions fournies avec PHP, par exemple l'extension pcntl)
- Utiliser la commande
php -vpour vérifier la version actuelle de PHP CLI~# php -v PHP 5.3.29-1~dotdeb.0 avec Suhosin-Patch (cli) (construit : 14 août 2014 19:55:20) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies - Télécharger le code source de PHP en fonction de la version
Page de téléchargement des anciennes versions de PHP : https://php.net/releases/
- Décompresser le fichier compressé du code source
Par exemple, si le nom du fichier compressé téléchargé est php-5.3.29.tar.gz
~# tar -zxvf php-5.3.29.tar.gz
php-5.3.29/
php-5.3.29/README.WIN32-BUILD-SYSTEM
php-5.3.29/netware/
...
- Accéder au répertoire ext/pcntl dans le code source
~# cd php-5.3.29/ext/pcntl/ - Exécuter la commande
phpize~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 - Exécuter la commande
configure~# ./configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E ... - Exécuter la commande
make~# make /bin/bash /tmp/php-5.3.29/ext/pcntl/libtool --mode=compile cc ... -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend... ... - Exécuter la commande
make install~# make install Installing shared extensions: /usr/lib/php5/20090626/ - Configurer le fichier ini
En exécutant php --ini pour trouver l'emplacement du fichier php.ini, puis ajoutez extension=pcntl.so dans le fichier.
Remarque :
Cette méthode est généralement utilisée pour installer les extensions fournies avec PHP, comme les extensions posix et pcntl. En plus d'utiliser phpize pour compiler une extension, il est également possible de recompiler l'ensemble de PHP en ajoutant les extensions comme paramètres lors de la compilation, par exemple en exécutant depuis le répertoire racine du code source :
~# ./configure --enable-pcntl --enable-posix ...
~# make && make install
Méthode 4 : Installation via phpize
Si l'extension à installer ne se trouve pas dans le répertoire ext du code source de PHP, il faut la rechercher et la télécharger sur https://pecl.php.net.
Prenons comme exemple l'installation de l'extension libevent (en supposant que la bibliothèque libevent-dev est installée sur le système).
- Télécharger l'archive de l'extension libevent (vous pouvez la télécharger dans n'importe quel répertoire de votre choix sur le système)
~# wget https://pecl.php.net/get/libevent-0.1.0.tgz --2015-05-26 21:43:40-- https://pecl.php.net/get/libevent-0.1.0.tgz Résolution de pecl.php.net... 104.236.228.160 Connexion à pecl.php.net|104.236.228.160|:80... connecté. Requête HTTP envoyée, attente de réponse... 200 OK Longueur : 9806 (9.6K) [application/octet-stream] Sauvegarde dans : « libevent-0.1.0.tgz »
100%[=======================================================>] 9,806 41.4K/s en 0.2s
2. Décompresser l'archive de l'extension
```shell
~# tar -zxvf libevent-0.1.0.tgz
package.xml
libevent-0.1.0/config.m4
libevent-0.1.0/CREDITS
libevent-0.1.0/libevent.c
....
-
Accéder au répertoire de l'archive
~# cd libevent-0.1.0/ -
Exécuter la commande
phpize~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 -
Exécuter la commande
configure~# ./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 cc... cc checking whether the C compiler works... yes ... -
Exécuter la commande
make~# /bin/bash /data/test/libevent-0.1.0/libtool --mode=compile cc -I. -I/data/test/libevent-0.1.0 -DPHP_ATOM_INC -I/data/test/libevent-0.1.0/include ... -
Exécuter la commande
make install~# make install Installing shared extensions: /usr/lib/php5/20090626/ -
Configurer le fichier ini
En exécutant php --ini pour trouver l'emplacement du fichier php.ini, puis ajoutez extension=libevent.so dans le fichier.