CentOS で PHP の Oracle 対応 RPM を作成する
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) です。ほかに JDBC や ODBC が必要であればダウンロードしてインストールしてください。
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 の enabled を 1 にすれば 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.