
PHP環境からOracleへ接続する手段として、いくつか方法がございますが、
ここでは、PHP用のoci8拡張モジュール(php_oci8.dll)を利用した接続方法を紹介します。

oci8拡張モジュールのロードを有効にする

php_oci8.dllファイルは、Delphi for PHPと一緒にインストールされ、以下のパスに配置されます。
<Delphi for PHP_HOME>/php/ext/php_oci8.dll
例えば、Delphi for PHP v2.0の場合のデフォルトパスは、C:\Program Files\CodeGear\Delphi for PHP\2.0 です。

Delphi for PHPでは、デフォルトでoci8拡張モジュールのロードが行われないため、
php.iniファイルの内容を修正し、PHP起動時に拡張モジュールがロードされるように設定する必要があります。

通常、PHPの実行環境では、php.iniを参照しますが、Delphi for PHPでは、php.ini.templateを参照します。
よって、Delphi for PHPを利用した開発段階では、php.ini.templateファイルを修正してください。
このファイルは、以下のパスに配置されます。
<Delphi for PHP_HOME>/php/php.ini.template
上記ファイルをテキストエディタで開き、
;extension=php_oci8.dll
という行を検索してください。
もし該当する行が見つかったら、以下の図のようにコメントを外してください。


ファイルを保存した後、Delphi for PHPを再起動してください。

またoci8拡張モジュールを利用するためには、同じ実行環境内にOracleクライアントファイル(例えば、oci.dllなど)が必要になります。
環境変数PATHで上記ファイルが置かれたフォルダにパスが通っているか確認ください。

Delphi for PHPを起動すると、oci8拡張モジュールのロードに失敗する(Oracle8i/9iクライアント)
Delphi for PHPからOracleへ接続する

ここでは、oci8拡張モジュール(php_oci8.dll)+Oracle Instant Clientを利用し、
Oracleデータベースサーバーへ接続する簡単な手順を紹介いたします。

(1)データエクスプローラの設定


上記の設定では、tnsname.oraを参照し、接続先のOracleインスタンスを解決する方法ではなく、
データエクスプローラの[接続パラメータ]-[データベース名]として直接、 Oracle インスタンスに対する接続アドレスを指定しています。
上記のORCL9iは、Oracleのサービス名となります。

尚、データエクスプローラから[Tables]を開いた時、以下のエラーが発生することがあります。


上記は、環境変数 NLS_LANGが設定されていないことが原因なため、もし該当する環境変数が
無い場合には、指定してください。
NLS_LANGの詳細につきましては、Oracleのマニュアル「Oracle Application Serverグローバリゼーション・ガイド」を参照ください。

ここでは、例として環境変数NLS_LANGを”Japanese_Japan.JA16SJIS”で設定します。

(2)フォームへデータベースコンポーネントを配置する

[ファイル]-[新規作成]-[アプリケーション]からフォームを作成します。
そして、データエクスプローラから”SCOTT.EMP”テーブルをドラッグし、





(3)データベースコンポーネントのプロパティを変更する

Databaseコンポーネントの”DriverName”プロパティを”oci8”に設定する


Tableコンポーネントの”TableName”プロパティを”SCOTT.EMP”から“EMP”へ変更する

(4)アプリケーションを実行
アプリケーションを実行し、Webブラウザで表示内容を確認する



Delphi for PHPの現状の不具合により、スキーマ名が含まれているテーブル
(例えば、「SCOTT.EMP」など) はWebブラウザでエラーが生じ、正しく表示できないことがあります。
その場合には手順(3)のようにスキーマ名を明示的に削除することで、この不具合を回避することができ、
Webブラウザで正しく表示することができます。

以上、Delphi for PHPでOracleへ接続する方法に関する紹介でした。