[PHP] Oracleと接続するために

※当サイトでは広告を掲載しています

急遽、Oracleにデータを突っ込んでいくツールを作ることになったので、PHPにOracleと接続するための環境をセットアップしました。

そのときの手順を備忘録としてメモメモ。

いろいろやり方はあると思いますが、今回は既存の環境にできるだけ影響が出ない形でやりたかったので、peclを使ってセットアップする方法を選んでみました。

まずはOracleのサイトから、Oracle Instant Client というものをダウンロードしてくる。今回は64bitのRedHatES5だったので、「Instant Client for Linux x86-64」というところから Version 11.1.0.7.0 の rpm を全種類ダウンロード。

oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm
oracle-instantclient11.1-jdbc-11.1.0.7.0-1.x86_64.rpm
oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpm
oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm
oracle-instantclient11.1-tools-11.1.0.7.0-1.x86_64.rpm

今回は必要のないものもありますが、インストール先が開発マシンなので、いつか必要になるかもしれないから入れておきましょう、ということで。

さて、この開発マシンには既にPHPが入っていますが、pearやらdevelあたりが入っていないので、これらもインストール。依存関係のあるものも一緒に。

apr-devel-1.2.7-11.x86_64.rpm
apr-util-devel-1.2.7-7.el5.x86_64.rpm
httpd-devel-2.2.3-22.el5.x86_64.rpm
php-devel-5.1.6-23.el5.x86_64.rpm
php-mbstring-5.1.6-23.el5.x86_64.rpm
php-odbc-5.1.6-23.el5.x86_64.rpm
php-pdo-5.1.6-23.el5.x86_64.rpm
php-pear-1.4.9-4.el5.1.noarch.rpm

これで pecl コマンドも使えるようになるので、以下のコマンドで oci8 を作成。

# pecl install oci8

すると、なにやらエラーが…。

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 23040 bytes) in /usr/share/pear/PEAR/PackageFile/v2/Validator.php on line 692

メモリーが足りないらしい。足りないなら増やしてあげるしかないので、pearの設定にメモリ上限を指定してみる。具体的には、/usr/share/pear/pearcmd.php に以下の一行を追加。

@ini_set('memory_limit','16M');

もう一度 pecl コマンドを実行してみると、今度は成功。途中なにやら聞かれたけど、そのままエンターキーでOKっぽい。

あとは、php.ini に以下の一行を追加し、apatchを再起動して作業完了。

extension=oci8.so

これでOracle関係の関数も使えるようになったので、さーてツール作成に勤しむぞ(´Д`)

コメント

タイトルとURLをコピーしました