読者です 読者をやめる 読者になる 読者になる

CentOS 5.1 デフォルトの PHP 5.1.6 で PDO_OCI を使えるようにする

急に実験用のPHP環境が必要になったので、CentOS 5.1 on VMware Server 環境で、PHP + PDO_OCI が動けばいいか…と思って環境構築した。が、手抜きをしてデフォルトパッケージの PHP を使おうとしたら、PDO_OCI をソースからビルドしないとインストールできなくて無駄に時間を食ってしまった…。
そりゃ、Oracle 系のパッケージなんて CentOS にゃついてないわな…。
ということで、CentOS 5.1 + デフォルトパッケージの PHP 5.1.6 で PDO_OCI を動かすまでの手順をメモっとく。

PHP のインストール

とりあえず必要そうなものをインストール。

yum install php php-devel php-pdo

あと必要に応じて、php-mbstring とかも入れる。

PDO_OCI をビルドするのに必要なライブラリをインストール

あたりまえだけど、ビルドできる(gcc が動く)環境になっている前提で。できない場合は、以下のコマンドでビルドするのに必要なものを入れとく。

yum groupinstall "Development Tools" "Development Libraries"

で、PDO_OCI をビルドするときに re2c ってのが必要だって言われるので、インストールしとく。ただ、こいつは DAG リポジトリからじゃないとダウンロードできないので、繋げない場合は yum のリポジトリを追加する。
/etc/yum.repos.d/ に Dag.repo という名前でファイルを作って、以下のような内容で保存。

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
gpgkey=http://ftp.riken.jp/Linux/dag/packages/RPM-GPG-KEY.dag.txt

リポジトリを登録したら yum install。

yum install re2c

そして、PDO_OCI を使うために当然、Oracle Client が必要になるので、Instant Client を入れる。
Oracle Software Downloads から、Linux 用の Version 10.2.0.3 の Basic と SDK の RPM をダウンロードしてきてインストール。11gの Instant Client だとビルドできなかった。

rpm -ivh oracle-instantclient-basic-10.2.0.3-1.i386.rpm
rpm -ivh oracle-instantclient-devel-10.2.0.3-1.i386.rpm

PDO_OCI のインストール

PECL :: Package :: PDO_OCI から wget とかで、1.0 のソースをダウンロードしてくる。
で、以下のコマンドを実行。

tar -xzvf PDO_OCI-1.0.tgz
cd PDO_OCI-1.0
phpize
./configure --with-pdo-oci=instantclient,/usr,10.2.0.3

で、エラーが出なかったら、

make
make install

最後に、/etc/php.ini か /etc/php.d/pdo.ini あたりに以下の1行を追加。

extension=pdo_oci.so

これでおkなはず。とりあえず、Oracle 10g に接続する事ができたので、たぶん大丈夫…。

追記

文字化けまくりだった…。
/etc/sysconfig/httpd へ以下の1行の追加が必要。

export NLS_LANG=Japanese_Japan.UTF8

UTF8じゃない環境の場合は、環境に合わせた適切な値にすること。