Installation d'extensions
Remarque
Contrairement au mode d'exécution d'Apache+PHP ou Nginx+PHP, Workerman s'exécute sur PHP en ligne de commande PHP CLI, utilisant un exécutable PHP différent et peut avoir un fichier php.ini différent. Ainsi, afficher phpinfo()
dans une page Web pour vérifier l'installation d'une extension ne signifie pas que l'extension correspondante est également installée pour PHP CLI en ligne de commande.
Comment vérifier quelles extensions sont installées pour PHP CLI
Exécutez la commande php -m
pour lister les extensions déjà installées pour PHP CLI. Le résultat sera similaire à ceci :
~# php -m
[PHP Modules]
event
posix
pcntl
...
Comment déterminer l'emplacement du fichier php.ini pour PHP CLI
Lors de l'installation d'extensions, il peut être nécessaire de configurer manuellement le fichier php.ini en y ajoutant des extensions. Pour cela, l'emplacement du fichier php.ini pour PHP CLI doit être confirmé. Vous pouvez exécuter php --ini
pour rechercher l'emplacement du fichier php.ini pour PHP CLI, le résultat sera similaire à ce qui suit (les résultats affichés varieront 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
...
Installation d'une extension pour PHP CLI (installation de l'extension memcached)
Méthode 1 : Utiliser apt ou yum pour l'installation
Si PHP a été installé via la commande apt ou yum, les extensions peuvent également être installées via apt ou yum.
Méthode pour l'installation de l'extension sur les systèmes debian/ubuntu avec apt (les utilisateurs non root doivent ajouter la commande sudo)
- Utiliser
apt-cache search
pour 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 install
pour installer le paquet d'extension~# apt-get install -y php5-memcached Reading package lists... Done Reading state information... Done ...
Méthode pour l'installation de l'extension sur les systèmes centos avec yum
- Utiliser
yum search
pour rechercher le paquet d'extension~# yum search memcached php php-pecl-memcached - module memcached pour php5
- Utiliser
yum install
pour installer le paquet d'extension~# yum install -y php-pecl-memcached Reading package lists... Done Reading state information... Done ...
Remarque:
L'installation des extensions PHP via apt ou yum configure automatiquement le fichier php.ini, rendant les extensions utilisables immédiatement. Cependant, certaines extensions peuvent ne pas avoir de paquet d'installation correspondant dans apt ou yum.
Méthode 2 : Utilisation de pecl pour l'installation
Utilisez la commande pecl install
pour installer une extension
- Installation via
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
Recherchez l'emplacement du fichier php.ini en exécutant php --ini
, puis ajoutez extension=memcached.so
dans le fichier.
Méthode 3 : Installation via la compilation à partir du code source (généralement pour installer des extensions fournies avec PHP, en utilisant l'extension pcntl comme exemple)
- Utilisez la commande
php -v
pour vérifier la version actuelle de PHP CLI~# php -v PHP 5.3.29-1~dotdeb.0 with Suhosin-Patch (cli) (built: Aug 14 2014 19:55:20) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
- Téléchargez le code source de PHP en fonction de la version
Page de téléchargement des versions historiques de PHP: https://php.net/releases/
- Décompressez le fichier source
Par exemple, si le fichier téléchargé est nommé 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édez au répertoire ext/pcntl du code source
~# cd php-5.3.29/ext/pcntl/
- Exécutez la commande
phpize
~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626
- Exécutez la commande
configure
~# ./configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E ...
- Exécutez 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écutez la commande
make install
~# make install Installing shared extensions: /usr/lib/php5/20090626/
- Configurez le fichier ini
Recherchez l'emplacement du fichier php.ini en exécutant php --ini
, puis ajoutez extension=pcntl.so
dans le fichier.
Remarque :
Cette méthode est généralement utilisée pour installer des extensions fournies avec PHP, telles que les extensions posix et pcntl. En plus d'utiliser phpize pour compiler une extension, il est également possible de recompiler PHP complet lors du paramétrage des extensions, par exemple, exécuter les commandes suivantes dans le répertoire racine du code source :
~# ./configure --enable-pcntl --enable-posix ...
~# make && make install
Méthode 4 : Installation via phpize
Si vous devez installer une extension qui n'est pas présente dans le répertoire ext du code source PHP, cette extension doit être recherchée et téléchargée depuis https://pecl.php.net
Pour installer l'extension libevent (supposant que la bibliothèque libevent-dev est installée sur le système) :
- Téléchargez le fichier compressé de l'extension libevent (à partir de n'importe quel répertoire sur le système actuel)
~# 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 Resolving pecl.php.net... 104.236.228.160 Connecting to pecl.php.net|104.236.228.160|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 9806 (9.6K) [application/octet-stream] Saving to: “libevent-0.1.0.tgz”
100%[=======================================================>] 9,806 41.4K/s in 0.2s
2. Décompressez le fichier 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édez au répertoire source
~# cd libevent-0.1.0/
-
Exécutez la commande
phpize
~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626
-
Exécutez 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écutez 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écutez la commande
make install
~# make install Installing shared extensions: /usr/lib/php5/20090626/
-
Configurez le fichier ini
Recherchez l'emplacement du fichier php.ini en exécutant php --ini
, puis ajoutez extension=libevent.so
dans le fichier.