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 を動かすまでの手順をメモっとく。
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じゃない環境の場合は、環境に合わせた適切な値にすること。