知識の引き出し

獲得した知識は、使えるように引き出しに整理してしまっておこう。

ソースコンパイルしたPHPに後からpdo_pgsqlをインストールする

PHPからPostgresqlに繋ぎたいので、ソースコンパイルしたPHP環境(今回の例では5.4.7)に、pdo_pgsqlをインストールして下さいと頼まれた。 PHP環境の構築や拡張モジュールなどには正直なところ全く詳しくなかったので、 どうやるのか、あまりに見当つかないものの、調べてやってみることに。

と思ってしばらく探したら、以下の記事がほとんどドンピシャ大当たり。ありがとうございます。

PHPをコンパイルした環境に、後からpgsql.soなどのモジュールを追加する方法 - Web系エンジニアbcoのメモ帳

以下、自分の環境でやった手順をメモる。

前提となるphp環境について

  • php 5.4.7
  • phpのインストール先:/opt/php
  • /usr/local/bin/php は、/opt/php/bin/php へのSymlinkとしている
  • コンパイルしたソースの置き場所:/usr/local/src/php-5.4.7

作業手順

現環境のPHPコンパイルしたソースの置き場所にある、extentionディレクトリへ行く

# cd /usr/local/src/php-5.4.7/ext/pdo_pgsql

phpのパス確認

拡張モジュールは今使っているphpのパス上にあるツールを使って生成するため、phpのパス(インストールパス)を確認する。

# ls -l /usr/local/bin/php
lrwxrwxrwx 1 root root 16  5月 13 16:21 2014 /usr/local/bin/php -> /opt/php/bin/php

phpizeでconfigureファイルを作成

phpizeとは?

拡張モジュールをビルドする低レベルなビルドツール。autoconfやautomake m4等のビルドツールが別途必要になる。これを使用することにより、PHPをソースから再コンパイルすることなく拡張モジュールをビルドすることができる。
引用:phpizeとは - PHP用語 Weblio辞書

インストールパス上のphpizeを実行すると、configure実行ファイルが出来る。

# /opt/php/bin/phpize

configureを実行

ここでは、--with-pdo-pgsql を入れることと、--with-php-config で、現在のphpパス上にあるphp-config実行ファイルを指定する必要がある

# ./configure --with-pdo-pgsql --with-php-config=/opt/php/bin/php-config

make実行

# make
# make test
# make install
Installing shared extensions:     /opt/php/lib/php/extensions/no-debug-non-zts-20100525/

インストール完了。これで、拡張ディレクトリにpdo_pgsql.soファイルが出来る。

php.iniファイルを編集

/etc/php.ini に、; extensionsのディレクトリと対象のモジュールの名前を記述する。

; 拡張モジュールの置き場
extension_dir =  /opt/php/lib/php/extensions/no-debug-non-zts-20100525/

; 利用するextension
extension = pdo_pgsql.so

apacheを再起動

# /etc/init.d/httpd restart