KUSANAGIのPHP7に拡張モジュールを追加する


こんにちは。
プライム・ストラテジー株式会社でKUSANAGIを開発している田島です。

KUSANAGIのPHP7環境では、あらかじめいくつかのモジュールがインストールされています。
インストールされている全てのモジュールを下記コマンドで確認することができます。

$ php7 -m

しかしながら、デフォルトのKUSANAGI環境にはインストールされていないPHP7拡張モジュールを追加でインストールしたいというケースもあると思います。
そこで今回は、KUSANAGIのPHP7に拡張モジュールを追加する方法を、ssh2を追加する具体例をもとにご紹介します。

モジュールがインストールずみか確認

$ php7 -m | grep ssh2
# 何も出力されない場合はインストールされていない

PECLのWEBサイトで拡張モジュールを検索する。

https://pecl.php.net/

検索窓にssh2と入力して、エンターキーを押します。

検索結果から該当するモジュールにアクセスする。

Available ReleasesのDownloadsから最新のURLを取得し、右クリックでコピーしておく。(2018年9月13日現在だとssh2の最新版のURLはhttps://pecl.php.net/get/ssh2-1.1.2.tgz)
※この時Dependenciesの欄でPHP7に対応しているモジュールであることを確認する。

拡張モジュールをインストールする

拡張モジュールをインストールしたいKUSANAGI環境にログインし、rootユーザーにて下記コマンドを順番に実行していきます。

$ cd /usr/local/src # ワーキングディレクトリに移動
$ wget https://pecl.php.net/get/ssh2-1.1.2.tgz # コピーしておいたモジュールの最新URL
$ tar xfvz ssh2-1.1.2.tgz
$ cd ssh2-1.1.2
$ /usr/local/php7/bin/phpize # phpizeを使って拡張モジュールのコンパイル前処理をする
$ ./configure --with-php-config=/usr/local/php7/bin/php-config # Makefile作成
$ make && make install # ビルドとインストール
$ ls /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718 | grep ssh2 # *.soを確認する。
ssh2.so
$ echo 'extension = ssh2.so' > /etc/php7.d/extensions/ssh2.ini # モジュールを読み込めるようにする

モジュールがインストールされているか確認する

$ php7 -m | grep -i ssh2
ssh2 # インストールされている

PHP-FPMを再起動する

WEBサーバに設定が反映されるように、最後にkusanagiコマンドでPHP-FPMを再起動して終了です。

$ kusanagi php7-fpm

問題が起こったので、戻したい場合

下記ファイルを削除してPHP-FPMを再起動します。

$ rm /etc/php7.d/extensions/ssh2.ini
$ rm /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/ssh2.so
$ kusanagi php7-fpm

Post Author: 田島優也