拡張機能のインストール

注意

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 CLIのphp.iniファイルの位置を確認する方法

拡張機能をインストールする際、php.iniファイルを手動で設定し、拡張機能を追加する必要があるため、PHP CLIのphp.iniファイルの位置を確認する必要があります。php --iniを実行するとPHP CLIのiniファイルの位置を特定できます。結果は以下のようになります(システムによって表示結果は異なる場合があります):

~# 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でインストールできます。

debian/ubuntu等のシステムでaptを使用したPHP拡張のインストール方法(非rootユーザーはsudoコマンドを追加する必要があります)

1、apt-cache searchを使って拡張パッケージを検索

~# apt-cache search memcached php
php-apc - APC (Alternative PHP Cache) module for PHP 5
php5-memcached - memcached module for php5

2、apt-get installを使用して拡張パッケージをインストール

~# apt-get install -y php5-memcached
Reading package lists... Done
Reading state information... Done
...

centos等のシステムでyumを使用したPHP拡張のインストール方法

1、yum searchを使って拡張パッケージを検索

~# yum search memcached php
php-pecl-memcached - memcached module for php5

2、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コマンドを使用して拡張機能をインストールします。

1、pecl installによるインストール

~# pecl install memcached
downloading memcached-2.2.0.tgz ...
Starting to download memcached-2.2.0.tgz (70,449 bytes)
....

2、php.iniを設定

php --iniを実行してphp.iniファイルの位置を確認し、そのファイルにextension=memcached.soを追加します。

方法3、ソースコードをコンパイルしてインストール(一般的にPHPに付属の拡張機能をインストールするため、pcntl拡張を例に)

1、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

2、バージョンに基づいてPHPソースコードをダウンロードします

PHP過去バージョンのダウンロードページ:https://php.net/releases/

3、ソースコードの圧縮ファイルを解凍します

例えばダウンロードした圧縮ファイル名が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/
...

4、ソース内のext/pcntlディレクトリに移動します

~# cd php-5.3.29/ext/pcntl/

5、phpizeコマンドを実行します

~# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

6、configureコマンドを実行します

~# ./configure
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
...

7、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...
...

8、make installコマンドを実行します

~# make install
Installing shared extensions:     /usr/lib/php5/20090626/

9、iniファイルを設定

php --iniを実行してphp.iniファイルの位置を確認し、そのファイルにextension=pcntl.soを追加します。

説明:
この方法は一般的にPHPに付属の拡張機能をインストールするために使用されます。例えば、posix拡張やpcntl拡張です。特定の拡張機能をphpizeでコンパイルするだけでなく、PHP全体を再コンパイルすることも可能で、コンパイル時に引数を使用して拡張機能を追加することができます。例えば、ソースのルートディレクトリで次のように実行します

~# ./configure --enable-pcntl --enable-posix ...
~# make && make install

方法4、phpizeを使用してインストール

インストールする拡張機能がphpソースのextディレクトリにない場合、この拡張機能はhttps://pecl.php.netで検索してダウンロードする必要があります。

libevent拡張をインストールする例を示します(假设システムがlibevent-devライブラリをインストール済みであることを前提とします)

1、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、拡張ファイルの圧縮パッケージを解凍します

~# 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
....

3、ソースディレクトリに移動します

~# cd libevent-0.1.0/

4、phpizeコマンドを実行します

~# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

5、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
...

6、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
...

7、make installコマンドを実行します

~# make install
Installing shared extensions:     /usr/lib/php5/20090626/

8、iniファイルを設定

php --iniを実行してphp.iniファイルの位置を確認し、そのファイルにextension=libevent.soを追加します。