CentOS で PHP の Oracle 対応 RPM を作成する

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

Red Hat 系の Linux であれば、PHP パッケージを -with oci8 オプション付きでリビルドすることにより PHP の Oracle 関数を有効にした RPM パッケージを作成できます。ただし事前に Oracle Instant Client のインストールが必要になります。

Oracle Instant Client を入手

OTN Japanからダウンロードできます。ただし、日本の OTN から RPM でダウンロードできるのは 10.1.0.5 とちょっと古いバージョンのみです。US の OTN のInstant Client Downloadsからは10.2.0.3 の RPM がダウンロードできます(本稿執筆時点)。なおダウンロードには登録が必要で、日本の OTN と US の OTN アカウントは異なります。

また、US でも i386 の RPM しか配布されておらず、x86_64 についてはRPMがありません(本稿執筆時点)。x86_64 の Oracle Instant Client RPM インストールについては別途記事にします。

ダウンロード・インストールが必要なのは BASIC (oracle-instantclient-basic-10.2.0.3-1.i386.rpm) と SDK (oracle-instantclient-devel-10.2.0.3-1.i386.rpm) です。ほかに JDBCODBC が必要であればダウンロードしてインストールしてください。

PHP のソース RPM のダウンロードとビルド

まず PHP のソース RPM をダウンロードします。ソース RPM はインストールする必要はありません。

  $ yumdownloader --source php

オプションをつけてビルドします。

  $rpmbuild --rebuild php-4.3.9-3.22.5.src.rpm --target i686  --define '_with_oci8 1'

もしくは、src.rpm をインストールして spec ファイルからビルドする場合は、

  $rpmbuild -ba php.spec --target i686 --with oci8

ここで httpd-devel や pcre-devel などの依存関係のエラーが出た場合は、それらのパッケージを yum でインストールします。なお、sendmail や flex が無くても警告は出ませんが、一部の関数が使えなくなってしまいますのでインストールしておきましょう。

MHash と MCrypt

また、Oracle とは関係ありませんが、CentOS の PHP は MHash や MCrypt が無効でコンパイルされていますので、それらに対応にすることもできます。MHash については次のようにすれば良いでしょう。

  $rpmbuild -ba php.spec --target i686 --with oci8 --with mhash

ただし MHash 関数は PHP 5.3.0 以降は PECL レポジトリに移動され、PHP 本体に含まれなくなります。ビルドには mhash-devel (と mhash)パッケージが必要になります。これらは CentOS には含まれていませんが、CentOS Plus に含まれています。/etc/yum.repos.d/CentOS-Base.repo ファイルを編集し、centosplus の enabled1 にすれば yum でインストールできます。(インストールが終わったら元に戻します。)

また、MCrypt については、spec ファイルの書き換えが必要です。PHPのMCrypt対応(CentOS4.4編)でパッチが配布されています。このパッチはソースではなく spec ファイルに対するパッチですのでお間違えなく。最新の php-4.3.9-3.22.5 の spec ファイルにパッチしようとすると失敗するので、私は手動でマージしました。なお該当サイトではバイナリの RPM も配布されています。

  $rpmbuild -ba php.spec --target i686 --with oci8 --with mcrypt

こちらも MHash 同様、libmcrypt、libmcrypt-devel パッケージが必要になります。これらも centosplus からインストールできます。

参考文献・関連記事

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

No comments yet.

Sorry, the comment form is closed at this time.

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