PHPは拡張モジュールという仕組みで機能を追加できます。
フレームワークやCMSを利用する場合も環境により拡張モジュールをインストールしなければいけない場合がります。
頻繁に行う作業ではなく作業を思い出すのに苦労するのでメモを記載します。
拡張モジュール(Extension)は公式マニュアルに詳細が記載されています。
PHP: 拡張モジュールの一覧/分類 – Manual
所属で拡張モジュールが分類されています。
PHPは本体を再コンパイルしなくても拡張モジュールを動的に追加する仕組みがあります。
大きな流れは下記のようになります。
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ファイルを作成することができます。
下記リンクで詳細に解説されています。
これらの拡張は » PECL にあります。 また、外部のライブラリを必要とするかもしれません。PECL には、この他にもまだ PHP マニュアルで文書化されていない拡張があります。
http://php.net/manual/ja/extensions.membership.php
PECL拡張モジュールはC言語で書かれたライブラリです。
実態はso拡張子のファイルです。
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
$ 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
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になっています。
$ sudo pecl uninstall foo
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。