2 概要
この章では、Oracle DatabaseおよびPHP環境をインストールし、テストする方法について説明します。
この章のトピックは、次のとおりです:
2.1 必要事項
Oracle DatabaseおよびPHP環境をインストールするには、次のものが必要です。
-
Oracle Database 12cR1
-
Apache Webサーバー。Linuxの場合、通常これはパッケージ・リポジトリで入手できます。
-
PHP 5.3以降。最近の一部のLinuxディストリビューションには、このバージョンがパッケージとして含まれています。
-
PHPファイルを編集するためのテキスト・エディタ。デバッガを備えているNetBeans PHPエディションなどのコード・エディタが理想的ですが、必須ではありません。
2.2 Oracle Databaseのインストール
コンピュータにOracle Databaseがインストールされていない場合は、インストールする必要があります。このチュートリアルで使用するサンプル・データは、デフォルトでインストールされます。これがサンプル・スキーマのHRコンポーネントとなります。
Oracle Databaseのインストールの詳細は、ご使用のオペレーティング・システム用のインストール・ガイドを参照してください。
-
『Oracle Databaseインストレーション・ガイドfor Microsoft Windows』
-
『Oracle Databaseインストレーション・ガイド for Linux』
この項では、次の項目について説明します。
関連項目:
-
HRサンプル・スキーマの詳細は、『Oracle Databaseサンプル・スキーマ』
を参照してください。
-
Oracle SQL DeveloperのWebページ
http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html
2.2.1 HRユーザーのロック解除
PHPアプリケーションは、HRユーザーとしてデータベースに接続します。HR
アカウントを使用する前に、ロック解除が必要になる場合があります。SQL*PlusまはたSQL Developerを使用して、HR
ユーザーのロックを解除します。
この項では、次の項目について説明します。
2.2.1.1 コマンドラインを使用したHRユーザーのロック解除
次のコマンドラインを使用してHRユーザーのロックを解除します。
SQL> source /u01/app/oracle/product/12.1/bin/oracle_env.sh SQL> sqlplus system/system_password SQL> alter user hr identified by <password-for-hr> account unlock;
system_password
は、データベースの構成時に入力したパスワードです。password-for-hr
は、HRアカウントのパスワードです。
2.2.1.2 SQL Developerを使用したHRユーザーのロック解除
SQL Developerを使用してサンプル・ユーザー・アカウントをロック解除する手順は、次のとおりです。
-
SYSTEMユーザー用のデータベース接続を作成していない場合は、この接続を作成します。
-
SYSTEMユーザー用のデータベース接続をオープンします。
-
接続ナビゲータで、SYSTEMユーザーの接続の下にある「他のユーザー」ノードを展開します。
-
「他のユーザー」の下にあるHRユーザーのノードを右クリックし、「ユーザーの編集」を選択します。
-
「ユーザーの作成/編集」ダイアログ・ボックスで、「アカウントがロックされています」オプションを選択解除します。
-
「新規パスワード」および「パスワードの確認」で、
HR
ユーザーのパスワードを入力します。 -
「パスワードが期限切れです(ユーザーは次回ログインを変更する必要があります)」を選択解除します。
-
「アカウントがロックされています」を選択解除します。
-
-
「適用」をクリックし、アカウントがロック解除され、期限切れにならないようにHRユーザーを変更します。
-
「閉じる」をクリックし、ダイアログ・ボックスを閉じます。
Oracleデータベース・アカウントのロック解除の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。
関連項目:
-
Oracle Databaseドキュメント
http://www.oracle.com/technetwork/indexes/documentation/index.html
2.2.2 データベース常駐接続プーリング
AnyCoサンプル・アプリケーションでは、データベース常駐の接続プール(DRCP)を使用して、多数のユーザーをサポートするためのPHPアプリケーションの拡張方法を示します。
PHPがスレッド・セーフであるとの想定はできないため、PHPはApache Webサーバーのpre-forkモデルやFastCGIなどのマルチプロセス・モードで実行されるのが一般的です。中間層にはプロセス間通信が存在しないため、アクティブPHPプロセスとアイドルPHPプロセスとの間でOracle接続を共有することはできません。DRCPが機能するのは、共有処理がデータベース・ホスト・マシンで行われるためです。そのため、複数の中間層ホストによって作成された接続リソースを共有することも可能になります。
最大のパフォーマンスを得るため、一般にPHP OCI8アプリケーションでは永続データベース接続が使用されます。PHPがアプリケーション・スクリプトの実行を終了し、その出力をWebユーザーのブラウザに送信するとき、スクリプトの背後にあるDB接続はクローズされません。接続は、まだ実行中で現在はアイドルのPHP/Apacheプロセスにキャッシュされたままになります。このPHPプロセスによる接続の再利用は、同じデータベース資格証明を使用して接続する後続のPHPスクリプト内で可能です。これはパフォーマンス面で大きな利点があります。DRCPがなかったとすると、PHPプロセスが多数存在する場合に、オープン状態のデータベース接続によってデータベース・ホストのメモリーが大量に消費される恐れがあります。各Webページ・リクエスト間に発生するユーザーの思考時間や、PHPスクリプトが非データベース操作を実行している時間など、多くの接続がアイドル状態になっている場合でも、そのような状況に陥ります。
DRCPを使用することでPHPアプリケーションは、データベース・ホストのメモリーを効率的に使用して多数のWebユーザーをサポートできます。DRCPを使用することで、データベース・リソースの使用ユーザーを、現在データベース操作を実行しているWebユーザーに限定できます。ベンチマークでは、小規模の商用Linuxデータベース・ホストを使用した場合、DRCPで何万ものWebユーザーをサポートできることが確認されました。
図2-1 DRCPなしの場合、PHPからのアイドル永続接続によってデータベース・リソースが消費される

DRCPは、データベース・ホスト上でデータベース・サーバー・プロセスの小規模なプールを維持することで、そのホストのメモリー不足を克服します。これらは、すべてのPHPプロセスおよび中間層サーバーにおけるすべてのPHPデータベース接続で、必要に応じて共用できます。
図2-2 DRCPのアーキテクチャ

PHPスクリプトがデータベースに接続する際、使用可能なサーバー・プロセスがプールになければ、スクリプトはいずれかのプロセスが空くのを待機します。そのため、データベースが過負荷になるのを回避でき、アプリケーションも実行し続けることができます。
DRCPプールを起動すると、プールを使用するかどうかをアプリケーションで実行時に選択できるようになります。これはPHP OCI8接続文字列で指定します。通常は、存続時間が短く、似たような種類のタスクのみがDRCPを使用するようにします。バッチ・プロセスではプールは使用しないようにします。
DRCPプールは2通りの方法で使用できます。基本的な使用方法は、プロセスのみを再利用する方法です。もう1つの方法では各プロセスに関連付けられたセッション・メモリーも再利用するため、パフォーマンスがさらに向上します。PHPでは永続接続のみが後者の方法を使用します。PHPのように、各スクリプトが1つのアプリケーションの構成物であるWebアプリケーションでは、このセッション・メモリー共有で問題が発生することはほとんどありません。ただし、セッション設定(日付形式など)が予期せず保持されないよう、また、そうしたことから情報漏えいが生じないよう注意を払う必要があります。DRCPでは、プールを仮想的にサブ・パーティション可することにより、このような問題を軽減できます。
PHP OCI8アプリケーションでは、oci_pconnect(
)コールを使用して、永続データベース接続を作成します。アプリケーションは、oci_connect()
またはoci_new_connect()
を使用してOracleにアクセスすることもできます。この方法では非永続接続が作成されます。oci_new_connect()
関数はコールされるたびに、トランザクション上の依存がない新規の接続リソースを返します。実行中のスクリプトが同じ接続資格証明を使用してoci_connect()
関数またはoci_pconnect()
関数を複数回コールした場合、これらの関数はそれぞれが同一のPHPリソースを返します。いずれの接続方法でも、各スクリプトの終了時に必要に応じてロールバックが実行されます。
これら3つの関数は、DRCPの使用有無によってもその動作に違いが生じます。
DRCPなしの場合、PHPスクリプトが完了しても永続接続はオープンの状態を維持します。同じ資格証明を使用して接続する後続のスクリプトは、その接続をすぐに再利用できます。これは速度は期待できますが、アイドル状態のプロセスも含め各PHPプロセスからの接続を維持し続ける必要があるため、データベース・ホストに十分なメモリーが必要になります。oci_connect()
関数およびoci_new_connect()
関数は、PHPスクリプトの終了後、その背後にあるデータベース接続を維持しません。この場合、接続確立までの時間が長くなりますが、データベース・ホストのメモリー使用の上限をアクティブのWebユーザー数に抑えることができます。
PHP接続でDRCPを使用する場合、DRCPプールにある確立済DRCPサーバー・プロセスを使用することで、3つのOCI8接続関数はいずれも恩恵を受けます。各スクリプトが終了したとき(さもなくば、それより前に)、データベース・プール・サーバーが、再利用に備えてDRCPプールに戻されます。DRCPブローカへの軽量接続が維持され、再接続のパフォーマンス向上を支援します。oci_pconnect()
関数は、プロセス・セッション・メモリーを再利用するため、効率性と拡張性がさらに向上します。oci_connect()
コールとoci_new_connect()
コールごとに、再利用されるDRCPプール・プロセス内にOracleセッション・メモリーが再作成されます。
DRCPとPHPの詳細は、次のホワイト・ペーパーを参照してください。
http://www.oracle.com/technetwork/topics/php/whatsnew/php-scalability-ha-twp-128842.pdf
2.2.3 DRCPプールの起動
DRCPプールは、あらかじめ提供されているPL/SQL DBMS_CONNECTION_POOL
パッケージを使用してSQL*Plusで管理できます。
Oracle Linuxでプールを起動するには、端末ウィンドウを開き、rootユーザーとして接続します。
# su -
次に、su
でOracleアカウントに切り替えます。
# su - oracle $ source /u01/app/oracle/product/12.1/bin/oracle_env.sh
SQL*PlusをSYSDBAシステム権限で実行し、DBMS_CONNECTION_POOL.START_POOL()
プロシージャを起動します。
$ sqlplus / as sysdba SQL> execute dbms_connection_pool.start_pool()
プールがデフォルト・パラメータを使用して実行されます。
プールを停止するには、次を実行します。
SQL> execute dbms_connection_pool.stop_pool()
データベースの再起動時にDRCPが実行中であった場合、プールは自動的に再起動されます。
プールのパラメータは、次のようにDBMS_CONNECTION_POOL.ALTER_PARAM()
で変更できます。
SQL> execute dbms_connection_pool.alter_param(null, 'MAXSIZE', '10');
パラメータの変更後はプールを再起動する必要があります。
現在のプール設定は、Oracleのデータ・ディクショナリに問い合せることで表示できます。
select * from DBA_CPOOL_INFO;
DRCPプール全体の統計は、次で表示できます。
select * from V$CPOOL_STATS;
統計の監視を継続することで、プールのパラメータの調整方法を決定できます。
各DRCPデータベース接続では、任意の接続クラスを指定できます。PHPの接続クラスは、PHPのphp.ini
初期化ファイルで構成するか、または実行時に設定します。「WindowsおよびLinuxでのPHPインストール後のタスク」を参照してください。接続クラスは、DRCPプールを様々なユース・ケースごとにパーティション化するときに役立ちます。
各接続クラスの統計を表示するには、次を使用します。
# select * from V$CPOOL_CC_STATS;
接続クラスを設定しなかった場合、DRCPプール・リソースでの共有利用が少なくなります。一般的なアプリケーションの場合、V$CPOOL_CC_STATS
で、システム生成の接続クラス名が多数表示される場合は、各中間層サーバー上のPHP構成ファイルで接続クラスが正しく設定されていることを確認してください。
DRCPプールは、PHP、PerlおよびPythonで記述されたものを含め、すべての対応アプリケーション間で共有できます。SQL*Plusなど、一部のツールはDRCP対応ではありません。DRCP接続をSQL*Plusで使用した場合、V$CPOOL_CC_STATS
でSHARED
というクラス名のエントリが表示されます。SQL*PlusはDRCPプールのプロセスを再利用しますが、各プロセスのセッション・メモリーを再作成する必要があります。
AnyCoアプリケーションを作成して実行すると、動作中のDRCPを監視ビューで確認できます。
2.3 Apache HTTPサーバーのインストール
Apache HTTPサーバーは、受信したユーザー・ページ・リクエストを処理し、PHPを起動してアプリケーションのHTMLマークアップを生成します。
Apache HTTPサーバーのダウンロード、インストールおよび使用方法の詳細は、Apache HTTP Server Projectのページ(http://httpd.apache.org/
)を参照してください。
この項では、次の項目について説明します。
2.3.1 Windows XPでのApacheのインストール
注意:
Windows XPは、Microsoft社による公式サポートが終了しています。最新のWindowsインストールの詳細は、Apache HTTP Server Projectのページ(http://httpd.apache.org/
)を参照してください
PHP 5.3.6はWindowsのFastCGIモデルを使用してインストールします。Windows用のApache HTTPサーバーを入手するには、次の手順を実行します。
「スタート」メニュー・オプションを使用して、Apacheを起動できます。コンソール・ウィンドウが開き、エラー・メッセージがあれば表示されます。エラー・メッセージはC:\Program Files\Apache Software Foundation\Apache2.2\logs\error.log
にも書き込まれる場合があります。
ApacheMonitorユーティリティを使用してApacheを起動することもできます。Apacheをすべてのユーザーに対するサービスとしてインストールすることを選択した場合、システム・トレイにApacheがアイコンとして表示されます。
エラーが発生した場合は、httpd.conf
ファイルを再確認します。
2.3.2 LinuxでのApacheのインストール
注意:
このセクションに示す情報の一部は、古いバージョンのApacheに関するものです。最新インストールの詳細は、Apache HTTP Server Projectのページ(http://httpd.apache.org/
)を参照してください
この項では、LinuxにApache HTTPサーバーをインストールする方法について説明します。
ファイル名および抽出ディレクトリは、現行バージョンに基づいて決定されます。この手順では、インストールしているバージョンのディレクトリ名を使用するようにしてください。
Apacheは、通常すでにLinuxにインストールされているか、パッケージ・リポジトリから直接入手できます。
この項では、次の項目について説明します。
2.3.2.2 LinuxでのApacheの手動インストール
この項では、LinuxにApache HTTPサーバーを手動でインストールする方法について説明します。ファイル名および抽出ディレクトリは、現行バージョンに基づいて決定されます。この手順では、インストールしているバージョンのディレクトリ名を使用するようにしてください。
Apache HTTPサーバーをインストールするには、次の手順を実行します。
Apacheを権限のあるユーザーとしてインストールおよび実行しないようにするには、--prefix
を$HOME/apache
などのディレクトリに設定します。権限のないユーザーはデフォルト・ポート80
を使用できないため、インストール完了後に、httpd.conf
を編集しListen
パラメータをApacheがリスニングするポートに変更する必要があります。
Apacheは次のapachectl
スクリプトで起動できます。
# /usr/local/apache/bin/apachectl start
次を使用してApacheを停止します。
# /usr/local/apache/bin/apachectl stop
2.3.2.3 Linux上のApacheのためのOracle環境の設定
PHP OCI8を適切に動作させるため、Apacheの起動前にOracle環境を正しく設定する必要があります。一般的には、$ORACLE_HOME/bin/oracle_env.sh
スクリプトで設定されるものと同じ変数を設定する必要があります。必要な環境変数はApacheの環境構成ファイルで設定できます。
デフォルトhttpd
パッケージを使用したOracle Linuxでは、これは/etc/sysconfig/httpd
です。前の項に記載されている方法で独自でApacheをインストールした場合、/usr/local/bin/envvars
です。このファイルを編集し、次の行を追加します。
export ORACLE_HOME=/u01/app/oracle/product/12.1 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
環境変数が適用されるように、Apacheを停止して再起動します。
2.3.2.4 Linuxでのサンプル・プロジェクトのためのユーザー・ディレクトリの設定
これから作成するPHPファイルはApacheがアクセスできるディレクトリに格納する必要があります。この場所の候補としては、Apacheのドキュメント・ルート・ディレクトリである/var/www/html
(または、Apacheを手動でインストールした場合は/usr/local/apache/htdocs
)が考えられます。より簡単な方法として、Apacheにホーム・ディレクトリのサブディレクトリへのアクセスを許可する方法もあります。
-
通常のユーザーとしてログインし、作業ディレクトリを作成します。
mkdir $HOME/public_html
Apacheプロセスがファイルにアクセスできるようにする必要があります。たとえば、次を使用します。
chmod 755 $HOME $HOME/public_html
-
httpd.conf
ファイルを編集します。-
Oracle Linuxの場合は、
/etc/httpd/conf/httpd.conf
を編集し、mod_userdir.c
セクションを探します。これを次のように変更します。<IfModule mod_userdir.c> # # UserDir is disabled by default since it can confirm the presence # of a user name on the system (depending on home directory # permissions). # #UserDir disable # # To enable requests to /~user/ to serve the user's public_html # directory, remove the "UserDir disable" line above, and uncomment # the following line instead: # UserDir public_html </IfModule>
-
Apacheを手動でインストールした場合は、
/usr/local/apache/conf/httpd.conf
を編集し、次の行を探します。Include conf/extra/httpd-userdir.conf
先頭にシャープ記号(
#
)がある場合は、削除して非コメント化します。
-
-
Apacheを再起動します
これにより、Webブラウザはユーザーの
$HOME/public_html
ディレクトリからファイルを提供できるようになります。たとえば、'chris
'としてログインして$HOME/public_html
に作成したPHPファイルには、URL http://localhost/~chris/
でアクセスできるようになります。PHPプロジェクト・ファイルを
public_html
に作成することにした場合は、これより先、マニュアルに記載されているURLを読み替える必要があります。たとえば、マニュアルでhttp://localhost/
を使用するように指定されている場合は、http://localhost/~user/
を使用することになります。
2.5 PHPのインストール
このマニュアル内のアプリケーションでは、Oracle Database用のOCI8 1.4拡張モジュールが含まれたPHP 5.3を使用します。PHP 5.3およびOCI8 1.4の新機能が使用されています。PHPのGD拡張モジュールは、「JSONの使用とJPEGイメージの生成」で使用されます。
この項では、次の項目について説明します。
関連トピック
2.5.1 WindowsでのPHPのインストール
注意:
このセクションに示す情報の一部は、古いバージョンのPHPに関するものです。最新の情報は、Oracle Technology NetworkのPHPサイト(http://www.oracle.com/technetwork/database/database-technologies/php/
)で、ダウロード、ドキュメント(ホワイト・ペーパーやFAQを含む)、コミュニティ(ディスカッション・フォーラムとブログ)などのリソースを参照してください。
この項では、WindowsにPHPをインストールする方法について説明します。
ファイル名および抽出ディレクトリは、現行バージョンに基づいて決定されます。この手順では、インストールしているバージョンのディレクトリ名を使用するようにしてください。
PHPをインストールするには、管理者ユーザーである必要があります。PHPをインストールするには、次の手順を実行します。
関連トピック
2.5.2 LinuxでのPHPのインストール
注意:
このセクションに示す情報の一部は、古いバージョンのPHPに関するものです。最新の情報は、Oracle Technology NetworkのPHPサイト(http://www.oracle.com/technetwork/database/database-technologies/php/
)で、ダウロード、ドキュメント(ホワイト・ペーパーやFAQを含む)、コミュニティ(ディスカッション・フォーラムとブログ)などのリソースを参照してください。
LinuxディストリビューションにPHP 5.3パッケージが含まれている場合は、それを使用するのが最も簡単な方法です。ソース・コードからPHPをビルドすることも可能です。
この項では、次の項目について説明します。
2.5.2.1 Oracle LinuxへのPHPおよびOCI8のインストール
Oracle Linuxで、次を使用してPHP 5.3をインストールします。
# yum install php53 php53-gd
または
# up2date php53 php53-gd
Oracle Unbreakable Linux Network (ULN)に登録していない場合は、次の項「Linux上の既存のPHPへのOCI8拡張モジュールの追加」」の説明のとおり、OCI8を手動でインストールする必要があります。
ULNの登録者である場合は、Oracle Software for Enterprise Linux 5チャネルでOCI8 RPMにアクセスできます。このチャネルを追加し、次を実行します。
# yum install php53-oci8-11gR2
または
# up2date php53-oci8-11gR2
php53-oci8-11gR2
パッケージをインストールすると、Oracleインスタント・クライアント・ライブラリもインストールされます。
Apacheを再起動します。エラーが発生した場合は、画面に表示されます。これらは/var/log/httpd/error_log
にも書き込まれる場合があります。問題があった場合は、httpd.conf
およびphp.ini
を再確認します。
2.5.2.2 Linux上の既存のPHPへのOCI8拡張モジュールの追加
OCI8なしのPHP 5.3がすでにインストールされている場合は、PHPのPECLライブラリ、http://pecl.php.net/oci8
を使用して最新のPHP OCI8拡張モジュールを追加できます。通常これは、OCI8をPHP 4.3.9以降に追加するときに使用できます。このマニュアルのコード例ではPHP 5.3が必要です。
phpize
コマンドなどのPHP開発ファイルが必要になります。Oracle Linuxでは、これはphp53-devel
パッケージに含まれています。
OCI8をインストールする手順は、次のとおりです。
PHP OCI8は共有ライブラリとしてビルドされます。そのため、他のPHPインストール内容に干渉することなく簡単にアップグレードできます。
PHPにライブラリをロードするには、/etc/php.ini
を編集し、次を追加します。
extension=oci8.so
2.6 PHPインストールのテスト
この項では、次の項目について説明します。
2.6.1 phpinfo()によるPHP構成の確認
最初にApacheのエラー・ファイルerror_log
(/var/log/httpd、/usr/local/apache/logsまたはC:\Program Files\Apache Software Foundation\Apache2.2\logs内)で、ApacheまたはPHPの起動エラーがないことを確認します。
PHPプロジェクト・ファイルを作成する場所を決定します。このディレクトリはApacheがアクセス可能なディレクトリである必要があります。たとえばLinuxでは、Apacheのドキュメント・ルート(/var/www/html or /usr/local/apache/htdocs)または$HOME/public_html(ユーザー・ディレクトリを構成した場合)を使用します。Windowsの場合は、Apacheのドキュメント・ルートC:\Program Files\Apache Software Foundation\Apache2.2\htdocsを使用します。
エディタで、新規のPHPファイルpi.php
を作成し、次を含めます。
<?php phpinfo(); ?>
このファイルをブラウザにロードします。
http://localhost/pi.php
次のことを確認します。
-
デフォルト以外のポート(8888など)を使用している場合は、ポートが含まれるようにURLを変更します。たとえば、
http://localhost:8888/pi.php
のようにします。 -
ファイルを
$HOME/public_html
に置いた場合は、ユーザー名が含まれるようにURLを変更します。たとえば、http://localhost/~chris/pi.php
のようにします。 -
または、
http://localhost:8888/~chris/pi.php
のように両方を使用します。
次のようなページが表示されることを確認します。

エコー・バックされたファイルのテキストが表示された場合は、ApacheがPHPファイルをPHPに送信する構成になっていません。Apacheのhttp.conf
ファイルに、行AddType application/x-httpd-php .php
(Linuxの場合)またはAddHandler fcgid-script .php
(Windowsの場合)が含まれている必要があります。
phpinfo()
が正常に出力された場合は、php.iniの場所とこのファイルがロードされたかどうかが表示されます。ロード済のphp.ini
が表示されない場合は、これまでの手順を再度確認し、sample php.ini
ファイルを適切な場所にコピーして、「WindowsおよびLinuxでのPHPインストール後のタスク」の項の手順に従います
「OCI8」セクションまでスクロールします。次のように表示されることを確認します

「OCI8」セクションがない場合は、OCI8をインストールしていることを確認する必要があります。共有ライブラリとしてインストールした場合は、php.ini
にextension=oci8.so
またはextension=php_oci8_11g.dll
(Windowsの場合)があることを確認し、さらにphpinfo()
の出力で、extension_dir
がOCI8ライブラリがインストールされたディレクトリに設定されていることを確認します。
2.6.2 OracleへのPHP接続のテスト
OCI8拡張モジュールが正常に動作していることを確認するには、新規のPHPファイルtestoci8.php
を作成し、次を含めます。
<?php $c = oci_connect('hr', 'welcome', 'localhost'); if (!$c) { $m = oci_error(); trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR); } $s = oci_parse($c, "SELECT * FROM employees"); if (!$s) { $m = oci_error($c); trigger_error('Could not parse statement: '. $m['message'], E_USER_ERROR); } $r = oci_execute($s); if (!$r) { $m = oci_error($s); trigger_error('Could not execute statement: '. $m['message'], E_USER_ERROR); } $r = oci_fetch_all($s, $res); if (!$r) { $m = oci_error($s); trigger_error('Could not fetch rows: '. $m['message'], E_USER_ERROR); } echo "<table border='1'>\n"; foreach ($res as $row) { echo "<tr>\n"; foreach ($row as $item) { echo " <td>".($item!==null?htmlentities($item, ENT_QUOTES):" ")."</td>\n"; } echo "</tr>\n"; } echo "</table>\n"; ?>
<?php ?>
タグ内のコードがすべてPHPによって処理され、出力がユーザーのブラウザに送信されます。タグの外側のテキストはユーザーのブラウザにそのまま送信されます。これには先行および後続の空白も含まれます。ファイルには複数のタグ・セットを含めることができます。これを利用してHTMLコンテンツ内にPHPのスニペットを埋め込むアプリケーションもあります。しかし、PHPを中心に据えたアプリケーションでは、通常PHPのechoまたはprint文を使用して、必要なHTMLタグを出力します。
OCI8関数のコールがどのように動作するかの詳細は、「PHP OCI8でSQLを実行する一般的な例」の項およびこのマニュアル内の残りの各所で説明します。
次のファイルをブラウザにロードします。
http://localhost/testoci8.php
Apacheをどのようにインストールしたかに応じて、次のいずれかを使用する必要があります。
-
http://localhost:8888/testoci8.php
-
http://localhost/~chris/testoci8.php
-
http://localhost:8888/~chris/testoci8.php
次のように表示されることを確認します。

画面に何も表示されない場合は、php.ini
にdisplay_errors = On
が含まれていることを確認します。ページを再ロードして、エラーが表示されるかどうかを確認します。
エラー「ORA-28000: アカウントがロックされています。」
が表示された場合は、「HRユーザーのロック解除」の項の手順のとおり、HRアカウントのロックを解除します。
Linuxでの次のような起動エラー
Warning: oci_connect():OciEnvNlsCreate() failed
があった場合、ORACLE_HOME
を正しく設定したかどうかを確認してください。
「ORA-12541: TNS: リスナーがありません」
のようなエラーが表示された場合は、Oracle Databaseのインストール・ログで、Oracle Databaseリスナーをインストールしたときに使用したポートを確認します。たとえば1522
を使用した場合は、testoci8.php
内の接続コールを次のように変更します。
$c = oci_connect('hr', 'welcome', 'localhost:1522');
ORA-01017: 無効なユーザー名/パスワード
のエラーが表示された場合は、oci_connect()
コールを変更し、「HRユーザーのロック解除」の項でHR
に割り当てたパスワードを使用します。
2.7 NetBeans IDEのインストール
NetBeansはPHP Webプロジェクト用のIDEとして非常に人気が高く、優れたコーディング機能を備えています。HTML、JavaScript、CSSを含む様々なプログラミング言語およびマークアップ言語の編集機能がサポートされています。NetBeansの最新バージョンはPHP 5.3の言語構造に対応しています。NetBeansは、PHPフレームワークをサポートしており、PHPUnitなどのテスト用ツールとの統合およびドキュメント生成用のPHPDocumentorとの統合が可能です。PHPの開発に役立つオプションのPHPデバッガ拡張モジュールとともに構成することもできます。NetBeansにはOracle Databaseと一緒に使用できるSQLエディタも含まれています。
NetBeansの詳細とダウンロードは、https://netbeans.org/
を参照してください。
この項では、次の項目について説明します。
注意:
これらのトピックの手順は、NetBeans 7.0を対象としています。これ以降のバージョンのNetBeansを使用する場合は、https://netbeans.org/
で該当する情報を参照してください。特に、https://netbeans.org/kb/index.html
のドキュメント、トレーニングおよびサポートのページを参照してください。
2.7.2 LinuxでのNetBeans IDEのインストール
NetBeans IDEをLinuxにインストールする手順は、次のとおりです。
NetBeansがインストールされます。
JDKがマシンにまだインストールされていない場合は、次の場所から、JDKが含まれているNetBeans 7.0のバンドルをダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/jdk-netbeans-jsp-142931.html
このバンドルはPHP対応になっていません。PHP対応にするには、「Tools」に移動し、「Plugins」を実行します。「Available Plugins」タブに移動し、「PHP」カテゴリ内のすべてのオプションを選択します。「Install」をクリックし、使用許諾条項および場所に同意します。要求された場合は、IDEを再起動します。
2.7.3 LinuxおよびWindowsでのNetBeansの構成
LinuxおよびWindowsでNetBeansを構成するには、次の手順を実行します。
- デスクトップ・アイコンまたはメニュー項目を使用して、NetBeansを起動します。「Tools」、「Options」の順にナビゲートします。
- 「General」オプションで、使用するブラウザを選択します。
- 「PHP」オプションで、「General」タブに移動します。
- PHP 5インタプリタをPHPコマンドライン実行可能ファイルに設定します。たとえば、
/usr/bin/php
、/usr/local/bin/php
またはC:\php-5.3.6\php.exe
などです。