CentOS 5.4 で Oracle 対応 PHP の RPM

2009-11-11 22:00
このエントリーをはてなブックマークに追加

以前書いたCentOS 5.2 での Oracle 対応 PHP の RPM の改訂版です。今回は CentOS 5.4 (32bit版) のマシンで試しました。なお、Oracle instant Client は 11.x ではなく 10.2.0.4 を利用しました。

CentOS 5.x では、PHP 5.1.6 をベースにしています。手順としては Oracle Instant Client をインストールし、CentOS の PHP の SRPM をダウンロードし、SPEC ファイルを編集し、ビルドという手順になります。

Oracle Instant Client の インストール

Oracle Instant Client 10.2.0.4 の RPM をダウンロードします。ダウンロードには OTN の登録が必要です。ここでは Linux x86版(32bit版)の 10.2.0.4 の RPM をダウンロードします。最低限、oracle-instantclient-basic と oracle-instantclient-devel のパッケージはインストールが必要です。jdbc ドライバは不要です。

次に /etc/ld.so.conf.d/oracle-instant-client.conf というファイルを作成し、ライブラリパスを追加します。

# echo '/usr/lib/oracle/10.2.0.4/client/lib/' >> /etc/ld.so.conf.d/oracle-instant-client.conf

64bit 版の場合は次のようになります。

# echo '/usr/lib/oracle/10.2.0.4/client64/lib/' >> /etc/ld.so.conf.d/oracle-instant-client.conf

ライブラリパスを再読込します。

# ldconfig 

いまは PHP をビルドするのが目的なので、Oracle データベースへの接続確認は割愛します。

PHP の SRPM のダウンロード

なぜか yumdownloader コマンドではうまく行かなかったので、理化学研究所のミラーから直接ダウンロードしました。

  wget http://ftp.riken.go.jp/Linux/centos/5.4/os/SRPMS/php-5.1.6-23.2.el5_3.src.rpm

この RPM をインストールすると、/usr/src/redhat/SPECS/ に php.spec ファイルが置かれます。また、/usr/src/redhat/SOURCES/ 配下にビルドに必要な PHP のソースファイルと、各種パッチファイルや設定ファイルなどが置かれます。

パッチファイルのダウンロード

php-5.1.6-oci8conf.patch をダウンロードして SOURCES ディレクトリに配置してください。Oracle が提供する SRPM や、他のパッチを元に、私が作ったものです。

SPEC ファイルの編集

こちらも、oci8 のために変更が必要です。変更箇所が多いので、php.spec (php-5.1.6.23.2.el5_3 用 32bit)に置きました。これをダウンロードして php.spec と差し替えてください。変更点は diff を取ればわかると思います。64bit 環境では、ライブラリパスを /usr/lib/oracle/%{ociver}/client/lib から /usr/lib/oracle/%{ociver}/client64/lib に変更する必要があります。

RPM のビルド

  $ rpmbuild -ba php.spec --target i686  --define 'oracle 1'

開発ライブラリなどがないと、コンパイルエラーとなります。事前に php.spec の BuildRequires セクションに書かれている RPM 群を yum コマンドでインストールしておきましょう。bzip2-devel, curl-devel, libstdc++-devel などです。

  # yum install bzip2-devel curl-devel libstdc++-devel

ビルドにはかなり時間がかかります。RPM ファイルは上記の例では /usr/src/redhat/RPMS/i686/ に配置されます。 php-oci8-5.1.6-23.2.ora.i686.rpm というファイルが PHP の OCI8 関数のモジュールを含んだ RPM です。 このモジュールを含む PHP の RPM をインストールしたら Apache を再起動します。phpinfo() コマンドで oci8 パッケージが有効になっていることを確認してみてください。

phpinfo() で OCI8関数が有効になった状態を確認する

コメントはまだありません

No comments yet.

Sorry, the comment form is closed at this time.

33 queries. HTML convert time: 0.073 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン