Installazione Estensioni
Attenzione
A differenza della modalità di esecuzione con Apache+PHP o Nginx+PHP, Workerman viene eseguito tramite la linea di comando di PHP PHP CLI, utilizzando un diverso eseguibile PHP; il file php.ini utilizzato può anche essere diverso. Pertanto, vedere un'estensione installata in un'applicazione web con phpinfo() non significa che l'estensione corrispondente sia installata anche per PHP CLI.
Come Determinare Quali Estensioni Sono Installate in PHP CLI
Esegui php -m per elencare le estensioni che sono già installate per PHP CLI, il risultato sarà simile al seguente:
~# php -m
[PHP Modules]
event
posix
pcntl
...
Come Determinare la Posizione del file php.ini di PHP CLI
Quando installiamo un'estensione, potremmo aver bisogno di configurare manualmente il file php.ini, aggiungendo l'estensione, quindi è necessario confermare la posizione del file php.ini di PHP CLI. Possiamo eseguire php --ini per trovare la posizione del file ini di PHP CLI, il risultato sarà simile al seguente (i risultati possono variare tra i diversi sistemi):
~# 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
...
Installazione di Estensioni per PHP CLI (Prendendo come Esempio l'Estensione memcached)
Metodo 1: Installazione tramite comandi apt o yum
Se PHP è stato installato tramite il comando apt o yum, anche le estensioni possono essere installate tramite apt o yum
Metodo di installazione delle estensioni PHP su sistemi debian/ubuntu (l'utente non root deve aggiungere il comando sudo)
- Usa
apt-cache searchper cercare il pacchetto dell'estensione~# apt-cache search memcached php php-apc - Modulo APC (Alternative PHP Cache) per PHP 5 php5-memcached - Modulo memcached per php5 - Usa
apt-get installper installare il pacchetto dell'estensione~# apt-get install -y php5-memcached Reading package lists... Done Reading state information... Done ...
Metodo di installazione delle estensioni PHP su sistemi centos
- Usa
yum searchper cercare il pacchetto dell'estensione~# yum search memcached php php-pecl-memcached - Modulo memcached per php5 - Usa
yum installper installare il pacchetto dell'estensione~# yum install -y php-pecl-memcached Reading package lists... Done Reading state information... Done ...Nota:
L'uso di apt o yum per installare le estensioni PHP configurerà automaticamente il file php.ini, reso subito utilizzabile, il che è molto comodo. Tuttavia, alcuni pacchetti di estensione potrebbero non essere disponibili in apt o yum.
Metodo 2: Installazione tramite pecl
Usa il comando pecl install per installare l'estensione
- Esegui
pecl install~# pecl install memcached downloading memcached-2.2.0.tgz ... Starting to download memcached-2.2.0.tgz (70,449 bytes) .... - Configura php.ini
Eseguendo php --ini cerca la posizione del file php.ini, quindi aggiungi extension=memcached.so nel file.
Metodo 3: Compilazione e Installazione da Sorgente (generalmente utilizzato per installare le estensioni fornite con PHP, prendendo come esempio l'estensione pcntl)
- Usa il comando
php -vper controllare la versione attuale di 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 - Scarica il codice sorgente di PHP in base alla versione
Pagina di download delle versioni storiche di PHP: https://php.net/releases/
- Estrai l'archivio sorgente
Ad esempio, se il nome del pacchetto scaricato è 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/
...
- Vai nella directory ext/pcntl del sorgente
~# cd php-5.3.29/ext/pcntl/ - Esegui il comando
phpize~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 - Esegui il comando
configure~# ./configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E ... - Esegui il comando
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... ... - Esegui il comando
make install~# make install Installing shared extensions: /usr/lib/php5/20090626/ - Configura il file ini
Eseguendo php --ini per cercare la posizione del file php.ini, quindi aggiungi extension=pcntl.so nel file.
Nota:
Questo metodo è generalmente utilizzato per installare le estensioni fornite con PHP, come ad esempio le estensioni posix e pcntl. Oltre a compilare un'estensione con phpize, è anche possibile ricompilare l'intero PHP, aggiungendo le estensioni come parametri al momento della compilazione, ad esempio eseguendo
~# ./configure --enable-pcntl --enable-posix ...
~# make && make install
Metodo 4: Installazione tramite phpize
Se l'estensione da installare non è presente nella directory ext del sorgente PHP, è necessario cercare e scaricare l'estensione da https://pecl.php.net
Prendendo come esempio l'installazione dell'estensione libevent (supponendo che il sistema abbia già installato la libreria libevent-dev)
- Scarica il pacchetto dell'estensione libevent (puoi scaricarlo in qualsiasi directory del sistema corrente)
~# 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. Estrai il pacchetto dell'estensione
```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
....
-
Vai nella directory sorgente
~# cd libevent-0.1.0/ -
Esegui il comando
phpize~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 -
Esegui il comando
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 ... -
Esegui il comando
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 ... -
Esegui il comando
make install~# make install Installing shared extensions: /usr/lib/php5/20090626/ -
Configura il file ini
Eseguendo php --ini per cercare la posizione del file php.ini, quindi aggiungi extension=libevent.so nel file.