Installation von Erweiterungen
Hinweis
Im Gegensatz zu den Betriebsmodi von Apache+PHP oder Nginx+PHP läuft Workerman basierend auf der PHP-Kommandozeile PHP CLI und verwendet ein unterschiedliches PHP-Ausführungsprogramm. Auch die verwendete php.ini-Datei kann unterschiedlich sein. Daher bedeutet das Drucken von phpinfo() auf einer Webseite, dass eine Erweiterung installiert ist, nicht, dass die entsprechende Erweiterung auch für die Kommandozeile PHP CLI installiert ist.
So stellen Sie fest, welche Erweiterungen PHP CLI installiert hat
Durch die Ausführung von php -m werden die bereits installierten Erweiterungen für die Kommandozeile PHP CLI aufgelistet. Das Ergebnis sieht ungefähr so aus:
~# php -m
[PHP Modules]
event
posix
pcntl
...
So finden Sie den Speicherort der php.ini-Datei für PHP CLI
Beim Installieren von Erweiterungen kann es nötig sein, die php.ini-Datei manuell zu konfigurieren und die Erweiterungen hinzuzufügen. Daher muss der Speicherort der php.ini-Datei für PHP CLI ermittelt werden. Sie können php --ini ausführen, um den Speicherort der ini-Datei von PHP CLI zu finden. Das Ergebnis sieht ungefähr so aus (die Anzeige kann je nach System variieren):
~# 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 von Erweiterungen für PHP CLI (Beispiel: Installation der memcached-Erweiterung)
Methode 1: Verwendung des apt- oder yum-Befehls zur Installation
Wenn PHP über die apt- oder yum-Befehle installiert wurde, können die Erweiterungen ebenfalls über apt oder yum installiert werden.
Methode zur installation von PHP-Erweiterungen unter Debian/Ubuntu usw. (Nicht-root-Benutzer müssen den Befehl sudo verwenden)
- Verwenden Sie
apt-cache search, um das Erweiterungspaket zu suchen.~# apt-cache search memcached php php-apc - APC (Alternative PHP Cache) Modul für PHP 5 php5-memcached - memcached Modul für php5 - Verwenden Sie
apt-get install, um das Erweiterungspaket zu installieren.~# apt-get install -y php5-memcached Reading package lists... Done Reading state information... Done ...
Methode zur installation von PHP-Erweiterungen unter CentOS usw.
- Verwenden Sie
yum search, um das Erweiterungspaket zu suchen.~# yum search memcached php php-pecl-memcached - memcached Modul für php5 - Verwenden Sie
yum install, um das Erweiterungspaket zu installieren.~# yum install -y php-pecl-memcached Reading package lists... Done Reading state information... Done ...Hinweis:
Die Installation von PHP-Erweiterungen über apt oder yum konfiguriert die php.ini-Datei automatisch, sodass sie nach der Installation sofort verwendet werden kann, was sehr praktisch ist. Nachteil ist, dass einige Erweiterungen möglicherweise kein entsprechendes Installationspaket in apt oder yum haben.
Methode 2: Verwendung von pecl zur Installation
Verwenden Sie den Befehl pecl install, um die Erweiterung zu installieren.
pecl installausführen.~# pecl install memcached downloading memcached-2.2.0.tgz ... Starting to download memcached-2.2.0.tgz (70,449 bytes) ....- Konfigurieren Sie die php.ini.
Durch Ausführung von php --ini können Sie den Speicherort der php.ini-Datei ermitteln und dann extension=memcached.so in die Datei einfügen.
Methode 3: Quellcodekompilierung und -installation (normalerweise um die mit PHP gelieferten Erweiterungen zu installieren, Beispiel: Installation der pcntl-Erweiterung)
- Verwenden Sie den Befehl
php -v, um die aktuelle Version von PHP CLI zu überprüfen.~# php -v PHP 5.3.29-1~dotdeb.0 mit Suhosin-Patch (cli) (gebaut: Aug 14 2014 19:55:20) Copyright (c) 1997-2014 Die PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies - Laden Sie den PHP-Quellcode basierend auf der Version herunter.
Seite zum Herunterladen der PHP-Historie: https://php.net/releases/
- Entpacken Sie das Quellcode-Archiv.
Wenn das heruntergeladene Archiv den Namen php-5.3.29.tar.gz hat:
~# 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/
...
- Wechseln Sie in das Verzeichnis ext/pcntl im Quellcode.
~# cd php-5.3.29/ext/pcntl/ - Führen Sie den Befehl
phpizeaus.~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 - Führen Sie den Befehl
configureaus.~# ./configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E ... - Führen Sie den Befehl
makeaus.~# 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... ... - Führen Sie den Befehl
make installaus.~# make install Installing shared extensions: /usr/lib/php5/20090626/ - Konfigurieren Sie die ini-Datei.
Durch Ausführung von php --ini können Sie den Speicherort der php.ini-Datei ermitteln und dann extension=pcntl.so in die Datei einfügen.
Hinweis:
Diese Methode wird normalerweise verwendet, um die mit PHP gelieferten Erweiterungen zu installieren, wie z.B. die posix- und pcntl-Erweiterungen. Neben dem Kompilieren einer bestimmten Erweiterung mit phpize können Sie auch die gesamte PHP-Installation neu kompilieren und dabei die Parameter zur Aktivierung von Erweiterungen verwenden. Zum Beispiel können Sie im Stammverzeichnis des Quellcodes folgendes ausführen:
~# ./configure --enable-pcntl --enable-posix ...
~# make && make install
Methode 4: Installation mit phpize
Wenn die zu installierende Erweiterung im ext-Verzeichnis des PHP-Quellcodes nicht vorhanden ist, muss die Erweiterung von https://pecl.php.net heruntergeladen werden.
Ein Beispiel für die Installation der libevent-Erweiterung (angenommen, das System hat das libevent-dev-Paket installiert).
- Laden Sie das komprimierte Dateiarchiv der libevent-Erweiterung herunter (den Pfad können Sie nach Belieben auswählen).
~# 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. Entpacken Sie das komprimierte Dateiarhiv der Erweiterung.
```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
....
-
Wechseln Sie in das Quellcodeverzeichnis.
~# cd libevent-0.1.0/ -
Führen Sie den Befehl
phpizeaus.~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 -
Führen Sie den Befehl
configureaus.~# ./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 ... -
Führen Sie den Befehl
makeaus.~# /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 ... -
Führen Sie den Befehl
make installaus.~# make install Installing shared extensions: /usr/lib/php5/20090626/ -
Konfigurieren Sie die ini-Datei.
Durch Ausführung von php --ini können Sie den Speicherort der php.ini-Datei ermitteln und dann extension=libevent.so in die Datei einfügen.