Установка расширений
Важно
В отличие от режима работы Apache+PHP или Nginx+PHP, Workerman работает на основе командной строки PHP PHP CLI и использует другую исполняемую программу PHP. Также файл php.ini может отличаться. Поэтому, если вы увидите установленное расширение, вызывая phpinfo() на веб-странице, это не означает, что соответствующее расширение также установлено в командной строке PHP CLI.
Как определить, какие расширения установлены в PHP CLI
Выполнение команды php -m выведет список расширений, установленных в командной строке PHP CLI, результат будет выглядеть следующим образом:
~# php -m
[PHP Modules]
event
posix
pcntl
...
Как определить расположение файла php.ini для PHP CLI
При установке расширений может потребоваться вручную настроить файл php.ini, чтобы добавить в него расширение. Поэтому нужно знать расположение файла php.ini для PHP CLI. Вы можете выполнить php --ini, чтобы узнать местоположение ini-файла PHP CLI, результат будет выглядеть следующим образом (результаты могут отличаться на разных системах):
~# 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
...
Установка расширений для PHP CLI (на примере установки расширения memcached)
Метод 1: Установка с помощью команд apt или yum
Если PHP установлен с помощью команд apt или yum, то расширения также можно установить с помощью apt или yum.
Метод установки PHP расширений через apt для систем, таких как debian/ubuntu (необходимо добавить sudo для не-root пользователей)
- Используйте
apt-cache search, чтобы найти пакет расширения~# apt-cache search memcached php php-apc - APC (Alternative PHP Cache) module for PHP 5 php5-memcached - memcached module for php5 - Используйте
apt-get install, чтобы установить пакет расширения~# apt-get install -y php5-memcached Reading package lists... Done Reading state information... Done ...
Метод установки PHP расширений через yum для систем, таких как centos
- Используйте
yum search, чтобы найти пакет расширения~# yum search memcached php php-pecl-memcached - memcached module for php5 - Используйте
yum install, чтобы установить пакет расширения~# yum install -y php-pecl-memcached Reading package lists... Done Reading state information... Done ...Примечание:
Использование apt или yum для установки PHP расширений автоматически настраивает файл php.ini, и после установки расширение доступно для использования, что очень удобно. Недостаток в том, что некоторые расширения могут не иметь соответствующих установочных пакетов в apt или yum.
Метод 2: Установка с помощью pecl
Используйте команду pecl install, чтобы установить расширение.
- Установите с помощью
pecl install~# pecl install memcached downloading memcached-2.2.0.tgz ... Starting to download memcached-2.2.0.tgz (70,449 bytes) .... - Настройте php.ini
Запустите php --ini, чтобы узнать расположение файла php.ini, затем добавьте extension=memcached.so в файл.
Метод 3: Установка из исходников (обычно для установки встроенных расширений PHP, на примере установки расширения pcntl)
- Используйте команду
php -v, чтобы посмотреть текущую версию 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 - Скачайте исходный код PHP в зависимости от версии
Страница загрузки исторических версий PHP: https://php.net/releases/
- Распакуйте архив исходников
Например, имя скачанного архива 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/
...
- Перейдите в директорию ext/pcntl в исходниках
~# cd php-5.3.29/ext/pcntl/ - Выполните команду
phpize~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 - Выполните команду
configure~# ./configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E ... - Выполните команду
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... ... - Выполните команду
make install~# make install Installing shared extensions: /usr/lib/php5/20090626/ - Настройте ini-файл
Запустите php --ini, чтобы узнать расположение файла php.ini, затем добавьте extension=pcntl.so в файл.
Примечание:
Этот метод обычно используется для установки встроенных расширений PHP, таких как posix и pcntl. Кроме использования phpize для компиляции определенного расширения, также можно перекомпилировать весь PHP, добавив параметры при компиляции, например, в корневом каталоге исходников выполните
~# ./configure --enable-pcntl --enable-posix ...
~# make && make install
Метод 4: Установка с помощью phpize
Если расширение, которое вы хотите установить, отсутствует в директории ext исходников PHP, необходимо найти и скачать это расширение на https://pecl.php.net
В качестве примера рассмотрим установку расширения libevent (предполагается, что в системе установлен библиотека libevent-dev).
- Скачайте архив с файлом расширения libevent (можно скачать в любой директории на текущей системе)
~# 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. Распакуйте архив расширения
```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
....
-
Перейдите в директорию исходников
~# cd libevent-0.1.0/ -
Выполните команду
phpize~# phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 -
Выполните команду
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 ... -
Выполните команду
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 ... -
Выполните команду
make install~# make install Installing shared extensions: /usr/lib/php5/20090626/ -
Настройте ini-файл
Запустите php --ini, чтобы узнать расположение файла php.ini, затем добавьте extension=libevent.so в файл.