PHPの拡張モジュール : PHP

Pocket

PHPは拡張モジュールという仕組みで機能を追加できます。
フレームワークやCMSを利用する場合も環境により拡張モジュールをインストールしなければいけない場合がります。

頻繁に行う作業ではなく作業を思い出すのに苦労するのでメモを記載します。

拡張モジュール(Extension)は公式マニュアルに詳細が記載されています。
PHP: 拡張モジュールの一覧/分類 – Manual

分類

所属で拡張モジュールが分類されています。

  • コア拡張
  • バンドルされている拡張
    バンドルされていても本体のソースコンパイル時に有効化していないものは使用できません。
    動的に有効化する方法はDynamic Extensionに記載しています。
  • 外部拡張
  • PECL 拡張

Dynamic Extension

PHPは本体を再コンパイルしなくても拡張モジュールを動的に追加する仕組みがあります。
大きな流れは下記のようになります。

  1. soファイルを作成。
  2. soファイルをextension_dirへ配置。
  3. php.iniのextensionディレクティブへsoファイル追加。

PECL拡張モジュールはpecl installでsoファイルの作成・配置を自動で行います。
また拡張モジュールをYum(CentOS)やHomebrew(Mac)などパッケージ管理機構でインストールする場合も同様です。

MacのHomebrewでMcrypt拡張モジュールをインストールする例

$brew install homebrew/php/php56-mcrypt

CentOSのYumで拡張モジュールをインストールする例

# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-pdo php-mysqlnd php-mbstring
//gdインストール
//php-gdをインストール前にlibwebp、gd-lastをインストールします。
# yum --disablerepo=amzn-main --enablerepo=epel install libwebp
# yum install gd-last
# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-gd 

PECLやパッケージ管理機構を使わないモジュールでもphpizeを使い本体のソースを再コンパイルすることなく拡張モジュールのみコンパイルしsoファイルを作成することができます。
下記リンクで詳細に解説されています。  

PEAR/PECL

これらの拡張は » PECL にあります。 また、外部のライブラリを必要とするかもしれません。PECL には、この他にもまだ PHP マニュアルで文書化されていない拡張があります。

http://php.net/manual/ja/extensions.membership.php

PECL拡張モジュールはC言語で書かれたライブラリです。
実態はso拡張子のファイルです。

PECLインストール(Mac)

PEARをインストールするとPECLもインストールされます。

// instll-pear-nozlib.pharはphpをインストールすると配置されています。
$ sudo php /usr/lib/php/install-pear-nozlib.phar -d /usr/local/lib/php -b /usr/local/bin

PECL拡張モジュールインストール(Mac)

  1. peclコマンドでパッケージをインストールします。
  2. php.iniのDynamic Extensionsへ.soファイル追加します。
$ sudo pecl install foo

php.ini

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
...
...
extension=foo.so

.soファイルの配置ディレクトリはphpinfo関数のextension_dirで確認できます。
例)

/usr/local/Cellar/php56/5.6.29_5/lib/php/extension

実際の例 statsパッケージインストール

PECL拡張モジュールstasは統計関数を集めたパッケージです。
PHP: 統計関数 – Manual

PHP公式マニュアルのインストールを見るとPECLでインストールする旨の記載があります。
PHP: インストール手順 – Manual

PECL :: Package :: statsを見るとPHP5.6系の最新は1.05(stats-1.0.5.tgz 2017.01.28時点)であることがわかります。またPHP7系の最新は2.03となっています。

今回はPHP5.6系の最新バーションである1.0.5をインストールします。

$ sudo pecl install stats-1.0.5.tgz

php.iniへstas.soを追加します。 

/usr/local/etc/php/5.6/php.ini
extension=stats.so

インストール先はextension_dirになります。
インストール先の例。

/usr/local/Cellar/php56/5.6.29_5/lib/php/extensions/no-debug-non-zts-20131226/stats.so

phpinfo関数を確認するとstats項目が追加されVersionは1.05になっています。

PECL拡張モジュールアンインストール

  1. pecl uninstall fooで拡張モジュールアンインストール
  2. php.iniのDynamic Extensionsの項目からfoo.soを削除
$ sudo pecl uninstall foo

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。