CentOS 5.4 で Oracle 対応 PHP の RPM
以前書いた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 パッケージが有効になっていることを確認してみてください。
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.