[技術]PHPをソースからインストールした環境に後からモジュールを追加する方法

Linux系サーバ上でWebのシステムをPHPを使って構築する場合
Webサーバ(Apacheなど) + + DB(MySQLなど)という
環境で作るのが一般的だと思います。

そのうちPHPモジュールをインストールするには
yumrpmapt-getのようなパッケージインストール
コマンドを使って行う方法とソースファイルから自前で
コンパイルしてインストールを行うという2つの方法があります。

どちらでインストールしても差異はないのですが
共にメリット/デメリットがあります。

方法 メリット デメリット
コマンド使用 インストールが容易
環境に依存する
カスタマイズが大変
手動 カスタマイズが容易
環境に依存しない
インストールが難しい

このうち、カスタマイズ性ですが、コマンドで行った場合は
PHPパッケージ内の拡張モジュールも含め、全てのものが
対象となり、不要なものまでインストールされてしまいます。

手動で行った場合はPHPモジュールのコンパイル時に
必要なオプションを指定することができるため
必要最低限のものだけインストールすることができます。
 参考:指定可能なオプション(一部)

しかし 必要最低限のものだけ であるために
後から機能を追加/変更するとなった場合には
その機能をPHPに新たに組み込む必要がでてきます。
 ※ DBをMySQL→PostgresSQLに変えたい
   SSH(https://~)対応したいなどなど

新たに追加するには、再コンパイルを行い
拡張モジュールを追加したPHPモジュールを
作り直さなければなりません。

PHPを作り直すことになるため、機能追加により
モジュールがうまく生成できない又は壊れてしまう
というリスクが発生します。

そういった再コンパイルをせずにPHPに機能追加を
行うのに便利なのが phpize というコマンド。

これはPHPを再コンパイルすることなく
拡張モジュールだけを作成できるコマンドです。

なので
 1.phpizeで拡張モジュールだけを作成
 2.PHPの設定ファイル変更
 3.Webサーバ再起動で設定反映
をするだけで機能追加を行うことができます。

パッと見るための目次

やり方

PHP に curl.so という拡張モジュール追加を
例としてやり方を説明します。
注)パスはそれぞれの環境に読み替えてください

1.PHPソースファイルにある extension フォルダの
 配下にある curl フォルダに移動

cd /usr/local/src/php/extension/curl

2.phpize コマンドを実行し、configure ファイルを作成

phpize

3.configure を実行し、Makeファイルを作成
 [–with-curl] オプションは curl を作成する際に
 必要となるため追加します
 ※ 他の機能の場合は、各モジュールそれぞれ固有の
   オプションをつける必要があります

./configure --with-curl

4.Makeを実行し、モジュール作成

make

5.作成したモジュールをインストール

make install

これで curl.so が作成完了です。
作成後のファイルの場所は php-config コマンドの
extension_dir の設定箇所に依存します。

/usr/local/php/lib/extensions/no-debug-non-zts-20100525

php-config の内容を変更していなければ
上記のようなパスに配置されます。
※ extensions 以下のフォルダ名は環境により変わります

6.作成したモジュールを読み込むため、php.iniを編集
php.ini ファイル内の Dynamic Extenshions のあたりに

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions :
;;;;;;;;;;;;;;;;;;;;;;
 ・
 ・
;extension=php_xsl.dll

extension=curl.so ★
 ・
 ・

★の行を追加します。

7.Webサーバ(Apache)を再起動

service httpd restart

又は

apachectrl restart

 ※ 環境により、apache2ctrlの場合もあります
又は

/etc/rc.d/init.d/httpd restart

 ※ Apache を自前でインストールした場合は
   このような方法になるかと思います。
   ただし、OS/Apacheのバージョンによっては
   上記コマンドが使えない場合があります。

まとめ

 手動でPHPをインストールした後、機能追加を行う際
 phpize コマンドを使用することで再作成のリスクを
 負うことなく、PHPの拡張を行うことができます。

 PHPでWebシステムを作る人は知っておくと
 便利なコマンドの1つかもしれません。
 (私自身もつい最近まで知りませんでした。。。)

コメントを残す