Instalação de extensões
Atenção
Diferente do modo de operação do Apache+PHP ou Nginx+PHP, o Workerman é executado via linha de comando em PHP PHP CLI, utilizando um executável PHP diferente, e o arquivo php.ini utilizado pode ser diferente também. Portanto, se em uma página web você visualizar phpinfo() e notar que uma extensão está instalada, isso não significa que a extensão correspondente também está instalada na linha de comando PHP CLI.
Como verificar quais extensões estão instaladas no PHP CLI
Executar php -m listará as extensões já instaladas no PHP CLI, o resultado será semelhante ao seguinte:
~# php -m
[Módulos PHP]
event
posix
pcntl
...
Como determinar a localização do arquivo php.ini do PHP CLI
Quando precisamos instalar extensões, pode ser necessário configurar manualmente o arquivo php.ini, adicionando as extensões. Portanto, é importante confirmar a localização do arquivo php.ini do PHP CLI. Você pode executar php --ini para encontrar a localização do arquivo ini do PHP CLI, o resultado será semelhante ao seguinte (a exibição pode variar entre diferentes sistemas):
~# php --ini
Caminho do Arquivo de Configuração (php.ini): /etc/php8/cli
Arquivo de Configuração Carregado: /etc/php8/cli/php.ini
Procurar arquivos .ini adicionais em: /etc/php8/cli/conf.d
Arquivos .ini adicionais analisados: /etc/php8/cli/conf.d/apc.ini,
/etc/php8/cli/conf.d/pdo.ini,
/etc/php8/cli/conf.d/pdo_mysql.ini
...
Instalando extensões para PHP CLI (exemplo da extensão memcached)
Método 1: Usar o comando apt ou yum
Se o PHP foi instalado através do comando apt ou yum, as extensões também podem ser instaladas via apt ou yum.
Método de instalação de extensão PHP com apt em sistemas como debian/ubuntu (usuários não-root precisam adicionar o comando sudo)
- Use
apt-cache searchpara procurar o pacote da extensão:~# apt-cache search memcached php php-apc - Módulo APC (Alternative PHP Cache) para PHP 5 php5-memcached - Módulo memcached para php5 - Use
apt-get installpara instalar o pacote da extensão:~# apt-get install -y php5-memcached Lendo listas de pacotes... Pronto Lendo informações de estado... Pronto ...
Método de instalação de extensão PHP com yum em sistemas como centos
- Use
yum searchpara procurar o pacote da extensão:~# yum search memcached php php-pecl-memcached - Módulo memcached para php5 - Use
yum installpara instalar o pacote da extensão:~# yum install -y php-pecl-memcached Lendo listas de pacotes... Pronto Lendo informações de estado... Pronto ...Nota:
Usar apt ou yum para instalar extensões PHP irá configurar automaticamente o arquivo php.ini, tornando-o pronto para uso imediatamente, o que é bastante conveniente. A desvantagem é que algumas extensões podem não ter um pacote correspondente disponível no apt ou yum.
Método 2: Usar pecl para instalar
Use o comando pecl install para instalar a extensão.
- Execute
pecl install:~# pecl install memcached baixando memcached-2.2.0.tgz ... Iniciando download de memcached-2.2.0.tgz (70.449 bytes) .... - Configure o php.ini
Execute php --ini para encontrar a localização do arquivo php.ini e adicione extension=memcached.so no arquivo.
Método 3: Compilar e instalar a partir do código fonte (geralmente para instalar extensões nativas do PHP, como a extensão pcntl)
- Use o comando
php -vpara verificar a versão atual do PHP CLI:~# php -v PHP 5.3.29-1~dotdeb.0 com Suhosin-Patch (cli) (compilado: 14 de agosto de 2014 19:55:20) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies - Baixe o código fonte do PHP de acordo com a versão:
Página para download de versões históricas do PHP: https://php.net/releases/
- Descompacte o arquivo fonte.
Por exemplo, se o nome do arquivo comprimido baixado for 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/
...
- Acesse o diretório ext/pcntl do código fonte:
~# cd php-5.3.29/ext/pcntl/ - Execute o comando
phpize:~# phpize Configurando para: Versão da API PHP: 20090626 Número da API do Módulo Zend: 20090626 Número da API da Extensão Zend: 220090626 - Execute o comando
configure:~# ./configure checando por grep que lida com linhas longas e -e... /bin/grep checando por egrep... /bin/grep -E ... - Execute o 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... ... - Execute o comando
make install:~# make install Instalando extensões compartilhadas: /usr/lib/php5/20090626/ - Configure o arquivo ini
Execute php --ini para encontrar a localização do php.ini e adicione extension=pcntl.so no arquivo.
Nota:
Esse método é geralmente utilizado para instalar extensões nativas do PHP, como as extensões posix e pcntl. Além de usar phpize para compilar uma extensão, você também pode recompilar todo o PHP, adicionando as extensões durante a compilação, por exemplo, no diretório raiz do código fonte execute:
~# ./configure --enable-pcntl --enable-posix ...
~# make && make install
Método 4: Instalação via phpize
Se a extensão que você deseja instalar não estiver no diretório ext do código fonte do PHP, você precisará procurá-la e baixá-la em https://pecl.php.net.
Vamos usar a instalação da extensão libevent como exemplo (supondo que o sistema tenha a biblioteca libevent-dev instalada).
- Baixe o arquivo compactado da extensão libevent (você pode baixar em qualquer diretório do seu 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 Resolvendo pecl.php.net... 104.236.228.160 Conectando a pecl.php.net|104.236.228.160|:80... conectado. Requisição HTTP enviada, aguardando resposta... 200 OK Comprimento: 9806 (9.6K) [application/octet-stream] Salvando em: “libevent-0.1.0.tgz”
100%[=======================================================>] 9.806 41.4K/s em 0.2s
2. Descompacte o arquivo da extensão:
```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
....
-
Acesse o diretório do código fonte:
~# cd libevent-0.1.0/ -
Execute o comando
phpize:~# phpize Configurando para: Versão da API PHP: 20090626 Número da API do Módulo Zend: 20090626 Número da API da Extensão Zend: 220090626 -
Execute o comando
configure:~# ./configure checando por grep que lida com linhas longas e -e... /bin/grep checando por egrep... /bin/grep -E checando por um sed que não trunca a saída... /bin/sed checando por cc... cc checando se o compilador C funciona... sim ... -
Execute o 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 ... -
Execute o comando
make install:~# make install Instalando extensões compartilhadas: /usr/lib/php5/20090626/ -
Configure o arquivo ini
Execute php --ini para encontrar a localização do php.ini e adicione extension=libevent.so no arquivo.