Installazione dell'estensione
Nota
Diversamente dalla modalità di esecuzione di Apache+PHP o Nginx+PHP, Workerman si basa sull'esecuzione della riga di comando PHP PHP CLI, utilizzando un diverso programma eseguibile PHP e potenzialmente un diverso file php.ini. Pertanto, stampare phpinfo()
su una pagina web per vedere se un'estensione è installata non significa che l'ambiente PHP CLI abbia anche installato l'estensione corrispondente.
Come verificare quali estensioni sono installate in PHP CLI
Eseguire il comando php -m
per elencare le estensioni installate in PHP CLI, il risultato sarà simile al seguente:
~# php -m
[PHP Modules]
event
posix
pcntl
...
Come trovare la posizione del file php.ini di PHP CLI
Quando si installa un'estensione, potrebbe essere necessario configurare manualmente il file php.ini per aggiungere l'estensione. È quindi necessario confermare la posizione del file php.ini di PHP CLI. Si può eseguire il comando php --ini
per cercare la posizione del file ini di PHP CLI, il risultato sarà simile al seguente (i risultati possono variare tra i vari sistemi):
~# php --ini
Percorso del file di configurazione (php.ini): /etc/php8/cli
File di configurazione caricato: /etc/php8/cli/php.ini
Scansione di file .ini aggiuntivi in: /etc/php8/cli/conf.d
File .ini aggiuntivi analizzati: /etc/php8/cli/conf.d/apc.ini,
/etc/php8/cli/conf.d/pdo.ini,
/etc/php8/cli/conf.d/pdo_mysql.ini
...
Installazione dell'estensione PHP CLI (installazione dell'estensione memcached come esempio)
Metodo 1: Installazione mediante apt o yum
Se PHP è stato installato tramite apt o yum, le estensioni possono essere installate anche tramite apt o yum.
Metodo di installazione dell'estensione php su sistemi debian/ubuntu tramite apt (gli utenti non root devono aggiungere il comando sudo)
- Utilizzare il comando
apt-cache search
per 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
- Utilizzare il comando
apt-get install
per installare il pacchetto dell'estensione~# apt-get install -y php5-memcached Lettura della lista dei pacchetti... Fatto Lettura dell'elenco dei pacchetti... Fatto ...
Metodo di installazione dell'estensione php su sistemi centos tramite yum
- Utilizzare il comando
yum search
per cercare il pacchetto dell'estensione~# yum search memcached php php-pecl-memcached - modulo memcached per php5
- Utilizzare il comando
yum install
per installare il pacchetto dell'estensione~# yum install -y php-pecl-memcached Lettura della lista dei pacchetti... Fatto Lettura dell'elenco dei pacchetti... Fatto ...
Nota:
L'installazione delle estensioni PHP tramite apt o yum include automaticamente la configurazione del file php.ini, rendendo le estensioni disponibili senza ulteriori passaggi. Tuttavia, alcune estensioni potrebbero non essere disponibili tramite apt o yum.
Metodo 2: Installazione tramite pecl
Utilizzare il comando pecl install
per installare l'estensione
- Installazione con
pecl install
~# pecl install memcached Download di memcached-2.2.0.tgz ... Inizio del download di memcached-2.2.0.tgz (70,449 byte) ....
- Configurare php.ini
Usando il comando php --ini
per trovare la posizione del file php.ini, quindi aggiungere extension=memcached.so
al file.
Metodo 3: Installazione tramite compilazione del codice sorgente (generalmente per l'installazione di estensioni fornite con PHP, esempio di installazione dell'estensione pcntl)
-
Utilizzare il comando
php -v
per verificare la versione corrente della riga di comando 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
-
Scaricare il codice sorgente di PHP in base alla versione
Pagina di download delle versioni storiche di PHP: https://php.net/releases/
-
Estrarre l'archivio compresso del codice sorgente
Ad esempio, se il nome del file compresso è
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/ ...
-
Accedere alla directory ext/pcntl del codice sorgente
~# cd php-5.3.29/ext/pcntl/
-
Eseguire il comando
phpize
~# phpize Configurazione di: Versione API di PHP: 20090626 Numero API del modulo Zend: 20090626 Numero API dell'estensione Zend: 220090626
-
Eseguire il comando
configure
~# ./configure controllo di grep che gestisce righe lunghe e -e... /bin/grep controllo di egrep... /bin/grep -E ...
-
Eseguire 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... ...
-
Eseguire il comando
make install
~# make install Installazione di estensioni condivise: /usr/lib/php5/20090626/
-
Configurare il file ini
Utilizzare il comando php --ini
per trovare la posizione del file php.ini, quindi aggiungere extension=pcntl.so
al file.
Nota:
Questo metodo viene generalmente utilizzato per installare estensioni fornite con PHP, come ad esempio l'estensione posix e l'estensione pcntl. Oltre a compilare un'estensione con phpize, è possibile ricompilare l'intero PHP aggiungendo l'estensione come parametro durante la compilazione, ad esempio eseguendo il seguente comando nella directory radice del codice sorgente
~# ./configure --enable-pcntl --enable-posix ...
~# make && make install
Metodo 4: Installazione tramite phpize
Se l'estensione da installare non è presente nella directory ext del codice sorgente di PHP, è necessario scaricarla da https://pecl.php.net e installarla.
Prendiamo come esempio l'installazione dell'estensione libevent (supponendo che il sistema abbia installato la libreria libevent-dev)
- Scaricare il file compresso dell'estensione libevent (in qualsiasi directory del sistema)
~# 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 Risoluzione di pecl.php.net... 104.236.228.160 Connessione a pecl.php.net|104.236.228.160|:80... connesso. Richiesta HTTP inviata, aspetto risposta... 200 OK Lunghezza: 9806 (9.6K) [application/octet-stream] Salvataggio in: “libevent-0.1.0.tgz”
100%[=======================================================>] 9,806 41.4K/s in 0.2s
2. Estrarre il file compresso 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
....
-
Accedere alla cartella sorgente
~# cd libevent-0.1.0/
-
Eseguire il comando
phpize
~# phpize Configurazione di: Versione API di PHP: 20090626 Numero API del modulo Zend: 20090626 Numero API dell'estensione Zend: 220090626
-
Eseguire il comando
configure
~# ./configure controllo di grep che gestisce righe lunghe e -e... /bin/grep controllo di egrep... /bin/grep -E controllo di a sed che non tronca l'output... /bin/sed controllo di cc... cc controllo che il compilatore C funzioni... sì ...
-
Eseguire 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 ...
-
Eseguire il comando
make install
~# make install Installazione di estensioni condivise: /usr/lib/php5/20090626/
-
Configurare il file ini
Utilizzare il comando php --ini
per trovare la posizione del file php.ini, quindi aggiungere extension=libevent.so
al file.