10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

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

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

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

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

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

しかし 必要最低限のものだけ であるために
後から機能を追加/変更するとなった場合には
その機能をPHPに新たに組み込む必要がでてきます。
 ※DBをMySQL⇒PostgressSQLに変えたい
  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ファイルを作成

    $ ./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 のあたりに
```ini:php.ini
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions :
;;;;;;;;;;;;;;;;;;;;;;
 ・
 ・
;extension=php_xsl.dll

extension=curl.so ★
 ・
 ・
```
★の行を追加します。

7. Webサーバ(Apache)を再起動
```console
$ service httpd restart
```
又は

```console
$ apachectrl restart
```
※環境により、apache2ctrlの場合もあります

又は

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

まとめ

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

PHPでWebシステムを作る人は知っておくと便利なコマンドの1つかもしれません。

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?