はじめに
昨今PHPによるWebシステム開発は増加の一途をたどり、Javaと並ぶ大きな流れとして、さまざまなシステムで利用されるようになってきました。
本稿では、Oracle DatabaseとPHPを組み合わせる上で最も基本となる、導入方法について説明します。
PHPとOracleを組み合わせる利点
PHPは、コンパイルなしで即時利用ができるインタプリタ/サーバーサイドスクリプト言語であり、テキストエディタでも開発が可能で、開発速度が速いのが特徴です。データベース・アクセスを初めとするさまざまな機能が利用でき、最新の技術を取り入れながら発展を続けています。また、パフォーマンスが良い点も挙げられます。
昨今のシステム開発のニーズとして、企業のビジネススタイルの変化に合わせたアイデアの即時具現化や要望への早期対応などが挙げられますが、PHPは追従できうる言語と認識されております。
Oracle Databaseは最初のリリースから20数年たち実績を積み重ね、信頼できるデータベースとして進化し、またインターネット対応を意識した8i、9iと最新のテクノロジーに追従し、現在は10gR2が最新となっています。
また、Oracle Corporation(US)ではPHPの総本山、Zend Tecnology社と提携関係にあり、積極的な機能追加が行われていて、非常に相性のよい組み合わせの一つとなっているのも特徴として挙げられます。
PHPとOracleを組み合わせると、高い柔軟性と信頼性を得られることが最大の利点です。
PHPへのOracleインターフェイスの導入方法
PHPへOracleインターフェイスを組み込む方法は、3通りあります。
- PHPモジュールをコンパイルする際に組み込む方法
- PEARからOracleモジュールを組み込む方法
- Zend Coreを導入する方法
1.は最も基本的な方法です。メリットとして必要な機能を最初から導入できる、ターゲットとなるホストで最適化されたモジュールを得ることができる反面、最低限コンパイル方法や必要なものを個別で用意する知識が必要です。
2.はOS/ディストリビューション等に付属するPHPモジュールに対して導入する場合など、コンパイルレスで導入する方法です。コンパイルが不要である反面、導入に際しPHPに対する知識が必要です。
3.はPHPの総本山と言えるZend社がリリースしている、PHPとOracleなどのデータベースを連携させるツールを利用する方法です。企業ユースとして不可欠なモジュール、コード最適化を行うZend Optimizerなどがパッケージされ、導入しやすくなっており、無償で利用することができます。これにはOracle Instant Clientライブラリを含みます。またWindows向けにもリリースされており当該環境では有効なパッケージです。
本記事では基本形となる1.の方法を説明します。PHPのコンパイルは比較的簡単であり、またOracleへの接続を理解しやすいためです。
PHPとOracleの接続概要
PHPはOracleを初めとするデータベースを利用できるように設計されています。PHPそのものについてはC言語で書かれたプログラムであり、データベースへのアクセスは基本的にC言語をベースとしたAPIを介してネイティブにデータベースへアクセスを行います。
Oracle Databaseでは、C言語インターフェイスとしてOCI(Oracle Call Interface)を用意しており、PHPからのアクセスもこのAPIを利用して行います(図1を参照)。
このOCIはライブラリとしてOracle Database本体、Oracle Client、Oracle Instant Clientに付属しており、PHP導入の際に指定し利用します。
このうち、Oracle Instant Clientは必要最低限のライブラリ、ユーティリティのみ個別に導入できます。また無償でOracle Technology Networkから入手でき、PHPへOracleモジュールを簡潔に導入することができます。
本記事ではこのOracle Instant Clientをベースとした導入を説明します。
なお、Oracle Instant Clientは最新のOracle Database 10gだけでなく、9i、8iなどに接続することも可能です。組み合わせにより、サポートされないものもあるため「Oracleシステム製品データベース対応一覧表」のOCI/OCCIをご確認ください(Instant Clientバージョンは、Oracle Clientバージョンと一致しています)。
前提となる環境
本記事は、下記環境をターゲットとし解説を行います。
- Fedora Core 6 (Linux OS)
- Apache HTTP Server 2.2.4
- PHP v5.2.2
- Oracle Instant Client 10gR2(10.2.0.3)
- Oracle Database 10gR2 Enterprise Edition 10gR2(10.2.0.3)
(※他サーバーにて稼動中のデータベース、AL32UTF8で構築済み)
なお、WebシステムにおいてはUTF8で導入することが無難な選択となるため、本記事では一貫してUTF8による設定にしています。
物理的な構成・配置については下図のようになります。