この章では、Oracle DatabaseおよびPHP環境をインストールし、テストする方法について説明します。
この章のトピックは、次のとおりです。
Oracle DatabaseおよびPHP環境をインストールするには、次のものが必要です。
Oracle Databaseをコンピュータにインストールする必要があります。このチュートリアルで使用するサンプル・データは、デフォルトでインストールされます。これがサンプル・スキーマのHRコンポーネントとなります。
Windowsに64ビット版のPHPはないため、Windowsの場合は32ビット版のOracle Databaseをインストールします。Oracle Databaseのインストール後、正しいPATH環境変数が設定されるように再起動します。
この項で説明する項目は、次のとおりです。
関連項目:
|
PHPアプリケーションは、HRユーザーとしてデータベースに接続します。HR
アカウントを使用する前に、ロック解除が必要になる場合があります。SQL*PlusまはたSQL Developerを使用して、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 welcome account unlock;
ここで、system_password
は、データベース構成時に入力したパスワードです。
SQL Developerを使用してHRユーザーのロックを解除する手順は、次のとおりです。
SQL Developerを起動し、Oracle Databaseへの接続をオープンします。
systemユーザーとしてOracle Databaseにログインします。
SQLワークシートまたはSQL*Plusを開き、次のSQL文を実行します。
alter user hr identified by welcome account unlock;
Oracle Databaseアカウントのロック解除の詳細は、『Oracle Database Express Edition 2日でデータベース管理者』の第7章「ユーザーおよびセキュリティの管理」を参照してください。
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ユーザーをサポートできることが確認されました。
DRCPは、データベース・ホスト上でデータベース・サーバー・プロセスの小規模なプールを維持することで、そのホストのメモリー不足を克服します。これらは、すべてのPHPプロセスおよび中間層サーバーにおけるすべてのPHPデータベース接続で、必要に応じて共用できます。
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
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を監視ビューで確認できます。
Apache Webサーバーは、受信したユーザー・ページ・リクエストを処理し、PHPを起動してアプリケーションのHTMLマークアップを生成します。
この項で説明する項目は、次のとおりです。
PHP 5.3.6はWindowsのFastCGIモデルを使用してインストールします。Windows用のApache HTTPサーバーを入手するには、次の手順を実行します。
Webブラウザに次のURLを入力します。
http://httpd.apache.org/download.cgi
httpd-2.2.17-win32-x86-no_ssl.msiをクリックします。
ダウンロードしたファイルを一時ディレクトリ(c:\tmp
など)に保存し、ダブルクリックしてインストールします。
ソフトウェアが、C:\Program Files\Apache Software Foundation\Apache2.2
などのディレクトリにインストールされます。
ファイル名および抽出ディレクトリは、現行バージョンに基づいて決定されます。この手順では、インストールしているバージョンのディレクトリ名を使用するようにしてください。
次のURLからApache mod_fcgid
FastCGIコンポーネントをダウンロードします。
これを、インストールしたApache 2.2のディレクトリに解凍します。
C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf
を編集し、次を追加します。
LoadModule fcgid_module modules/mod_fcgid.so
httpd.conf
で、htdocsの<Directory>セクションを探し、OptionsにExecCGIを追加します。
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"> ... Options Indexes FollowSymLinks ExecCGI ... </Directory>
「スタート」メニュー・オプションを使用して、Apacheを起動できます。コンソール・ウィンドウが開き、エラー・メッセージがあれば表示されます。エラー・メッセージはC:\Program Files\Apache Software Foundation\Apache2.2\logs\error.log
にも書き込まれる場合があります。
ApacheMonitorユーティリティを使用してApacheを起動することもできます。Apacheをすべてのユーザーに対するサービスとしてインストールすることを選択した場合、システム・トレイにApacheがアイコンとして表示されます。
エラーが発生した場合は、httpd.conf
ファイルを再確認します。
この項では、LinuxにApache HTTPサーバーをインストールする方法について説明します。
ファイル名および抽出ディレクトリは、現行バージョンに基づいて決定されます。この手順では、インストールしているバージョンのディレクトリ名を使用するようにしてください。
Apacheは、通常すでにLinuxにインストールされているか、パッケージ・リポジトリから直接入手できます。
この項では、LinuxにApache HTTPサーバーを手動でインストールする方法について説明します。ファイル名および抽出ディレクトリは、現行バージョンに基づいて決定されます。この手順では、インストールしているバージョンのディレクトリ名を使用するようにしてください。
Apache HTTPサーバーをインストールするには、次の手順を実行します。
httpd-2.2.17.tar.bz2
など、httpd
サーバーをapache.orgからダウンロードします。
httpd-2.2.17.tar.bz2
ファイルをダウンロードしたディレクトリに移動します。
rootユーザーとしてログインし、次のコマンドを実行します。
# tar -jxvf httpd-2.2.17.tar.bz2 # cd httpd-2.2.17 # export ORACLE_HOME=/usr/lib/oracle/app/oracle/product/11.2.0/server # ./configure \ --prefix=/usr/local/apache \ --enable-module=so # make # make install
--enable-module=so
オプションは、PHPをDynamic Shared Object(DSO)としてコンパイルすることを許可します。--prefix
オプションは、make install
コマンドで使用されるApacheインストール・ディレクトリを設定します。
Apacheを権限のあるユーザーとしてインストールおよび実行しないようにするには、--prefix
を$HOME/apache
などのディレクトリに設定します。権限のないユーザーはデフォルト・ポート80
を使用できないため、インストール完了後に、httpd.conf
を編集しListen
パラメータをApacheがリスニングするポートに変更する必要があります。
Apacheは次のapachectl
スクリプトで起動できます。
# /usr/local/apache/bin/apachectl start
次を使用してApacheを停止します。
# /usr/local/apache/bin/apachectl stop
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を停止して再起動します。
これから作成するPHPファイルはApacheがアクセスできるディレクトリに格納する必要があります。この場所の候補としては、Apacheのドキュメント・ルート・ディレクトリである/var/www/html
(または、Apacheを手動でインストールした場合は/usr/local/apache/htdocs
)が考えられます。より簡単な方法として、Apacheにホーム・ディレクトリのサブディレクトリへのアクセスを許可する方法もあります。
通常のユーザーとしてログインし、作業ディレクトリを作成します。
mkdir $HOME/public_html
Apacheプロセスがファイルにアクセスできるようにする必要があります。たとえば、次を使用します。
chmod 755 $HOME $HOME/public_html
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/
を使用することになります。
Apache HTTPサーバーのインストールをテストするには、次の手順を実行します。
次のURLを入力します。
http://localhost/
Webブラウザに、次のようなページが表示されます。
このページが表示されない場合は、Apache構成を確認します。一般的な問題としては、Apacheが実行されていない、Apacheがデフォルト以外のポートをリスニングしているなどの問題が考えられます。ポート番号は、Apacheの構成ファイル/etc/httpd/conf/httpd.conf
(あるいは、/usr/local/apache/conf/httpd.conf
またはC:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf
)のListen
パラメータで設定します。
サイトでデフォルト以外のポート番号を使用する場合は、これより先、マニュアルに記載されているURLを読み替える必要があります。たとえば、Apacheがポート8888をリスニングする場合は、マニュアルでhttp://localhost/
を使用するように指定されている場合に、http://localhost:8888/
を使用することになります。
このマニュアル内のアプリケーションでは、Oracle Database用のOCI8 1.4拡張モジュールが含まれたPHP 5.3を使用します。PHP 5.3およびOCI8 1.4の新機能が使用されています。PHPのGD拡張モジュールは、第11章「JSONの使用とJPEGイメージの生成」で使用されます。
この項で説明する項目は、次のとおりです。
この項では、WindowsにPHPをインストールする方法について説明します。
ファイル名および抽出ディレクトリは、現行バージョンに基づいて決定されます。この手順では、インストールしているバージョンのディレクトリ名を使用するようにしてください。
PHPをインストールするには、管理者ユーザーである必要があります。PHPをインストールするには、次の手順を実行します。
PHP 5.3.6 zipファイルを次のWebサイトからダウンロードします。
http://windows.php.net/download/
FastCGIモードでインストールするので、非スレッドセーフ・バンドルを使用します。
Windowsのエクスプローラで、PHP 5.3.6 zipファイルをダウンロードしたディレクトリに移動します。
C:\php-5.3.6
というディレクトリにPHPパッケージを解凍します。
php.ini-development
をC:\php-5.3.6\php.ini
にコピーします。
php.ini
を編集して次の変更を加えます。
行extension_dir = "C:\php-5.3.6\ext"
を追加します。
これはPHP拡張モジュールが含まれているディレクトリです。
行頭のセミコロンを削除します。
extension=php_oci8_11g.dll
C:\Program Files\Apache Software Foundation\Apache2.2\conf\
httpd.conf
を編集し、次の行を追加します。必ず、バックスラッシュ(\
)ではなくスラッシュ(/
)を使用してください。
FcgidInitialEnv PHPRC "c:/php-5.3.6" AddHandler fcgid-script .php FcgidWrapper "c:/php-5.3.6/php-cgi.exe" .php
mod_fcgid.so
がロードされ、項「Windows XPでのApacheのインストール」の説明のとおり、ExecCGIオプションが設定されていることを確認します。
Apacheサーバーを再起動すると、PHPインストールのテストが可能になります。
エラーが発生した場合は、httpd.conf
およびphp.ini
ファイルを再確認します。PATH
環境変数にOracleライブラリが含まれるようにするため、Oracle Databaseのインストール後、必ずコンピュータを再起動します。
LinuxディストリビューションにPHP 5.3パッケージが含まれている場合は、それを使用するのが最も簡単な方法です。ソース・コードからPHPをビルドすることも可能です。
この項で説明する項目は、次のとおりです。
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
を再確認します。
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
パッケージに含まれています。
http://pecl.php.net/get/oci8-1.4.5.tgz
をダウンロードして展開します。
次のコマンドを実行します。
# cd oci8-1.4.5 # phpize # export ORACLE_HOME=/u01/app/oracle/product/12.1 # ./configure --with-oci8 # make install
PHP OCI8は共有ライブラリとしてビルドされます。そのため、他のPHPインストール内容に干渉することなく簡単にアップグレードできます。
PHPにライブラリをロードするには、/etc/php.ini
を編集し、次を追加します。
extension=oci8.so
この項では、Linux上でソース・コードからPHPをビルドする方法について説明します。ファイル名および抽出ディレクトリは、現行バージョンに基づいて決定されます。この手順では、インストールしているバージョンのディレクトリ名を使用するようにしてください。
この手順を実行すると、OCI8とともにPHPバイナリが静的に組み込まれます。代替手段として考えられるのは、前項の説明のとおり、OCI8なしでPHPをビルドした後、PECLからOCI8を追加する方法です。
PHPをインストールするには、次の手順を実行します。
次からPHP 5.3.6をダウンロードします。
rootユーザーとしてログインし、次のコマンドを実行します。
# tar -jxvf php-5.3.6.tar.bz2 # cd php-5.3.6 # export ORACLE_HOME=/u01/app/oracle/product/12.1 # ./configure \ --with-oci8 \ --with-apxs2=/usr/local/apache/bin/apxs \ --with-config-file-path=/usr/local/apache/conf
/usr/local/apache
以外にApacheがインストールされている場合は、使用しているシステムでの適切なパスを使用します。PHPを標準外の場所(ホーム・ディレクトリの下位など)にインストールする場合は、configure
を実行するときに--prefix
オプションを追加します。たとえば、--prefix=$HOME/php53
のようにします。
PHPをビルドしてインストールします。
# make # make install
PHPで提供される初期化開発ファイルをコピーします。
# cp php.ini-development /usr/local/apache/conf/php.ini
Apacheの構成ファイル/usr/local/apache/conf/httpd.conf
を編集します。
PHPのインストールでLoadModule
行が挿入されなかった場合は、次のように追加します。
LoadModule php5_module modules/libphp5.so
次の行をhttpd.conf
に追加します。
# # This next section will call PHP for .php files # AddType application/x-httpd-php .php
Apacheサーバーを再起動します。
/usr/local/apache/bin/apachectl stop /usr/local/apache/bin/apachectl start
エラーが発生した場合は、画面に表示されます。エラーは、/usr/local/apache/logs/error_log
にも書き込まれる場合があります。問題があった場合は、httpd.conf
およびphp.ini
を再確認します。
PHPのインストール後、php.ini
構成ファイルに次の設定が含まれていることを確認します。
タイムゾーンの設定は、PHP 5.3の新しい要件です。
date.timezone = America/Los_Angeles
メッセージをApacheのログ・ファイルのみに出力するのではなく、PHPのdisplay_errors
を設定して出力テキストに表示されるようにしておくと、テストの際に便利です。php.ini
でdisplay_errors
設定を探し、必要に応じてOn
に変更します。このディレクティブが存在しない場合は、次の行を追加します。
display_errors = On
DRCP接続クラスがphp.ini
に構成されている必要があります。この名前はユーザーが選択した文字列であり、このアプリケーションとDRCPを使用する他のアプリケーションとの区別に使用されます。クラスが設定されていない場合は、OracleでDRCPプールを効率よく共有できません。
次のようなクラス名エントリを追加します。
oci8.connection_class = ACXE
構成ファイルを保存します。
Linuxを使用している場合は、前の項「Linux上のApacheのためのOracle環境の設定」に記載されている手順も完了していることを確認します。
Apacheを再起動します。
この項で説明する項目は、次のとおりです。
最初に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ライブラリがインストールされたディレクトリに設定されていることを確認します。
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
に割り当てたパスワードを使用します。
NetBeansはPHP Webプロジェクト用のIDEとして非常に人気が高く、優れたコーディング機能を備えています。HTML、JavaScript、CSSを含むいくつかのプログラミング言語およびマークアップ言語の編集機能がサポートされています。NetBeansの最新バージョンはPHP 5.3の言語構造に対応しています。NetBeansは、PHPフレームワークをサポートしており、PHPUnitなどのテスト用ツールとの統合およびドキュメント生成用のPHPDocumentorとの統合が可能です。PHPの開発に役立つオプションのPHPデバッガ拡張モジュールとともに構成することもできます。NetBeansにはOracle Databaseと一緒に使用できるSQLエディタも含まれています。
詳細なインストール手順は、次のURLで入手できます。
http://netbeans.org/community/releases/70/install.html
この項で説明する項目は、次のとおりです。
NetBeans IDEをWindowsにインストールする手順は、次のとおりです。
NetBeans 7.0とJava SE Development Kitを次の場所からダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/jdk-netbeans-jsp-142931.html
Windowsのエクスプローラで、ダウンロードしたファイルjdk-6u25-nb-7_0-windows-ml.exe
を探し、ダブルクリックして実行します。
インストール後、「スタート」、「すべてのプログラム」、「NetBeans」、「NetBeans IDE 7.0」の順にナビゲートして、NetBeansを起動します。
「Run Tools」から「Plugins」を選択します。
「Available Plugins」タブに移動し、「PHP」カテゴリ内のすべてのオプションを選択します。
「Install」をクリックし、使用許諾条項および場所に同意します。
要求された場合は、IDEを再起動します。
NetBeans IDEをLinuxにインストールする手順は、次のとおりです。
次のWebサイトからNetBeans 7.0 PHPバンドルをダウンロードします。
Linuxでターミナル・ウィンドウを開き、インストーラを実行します。
# sh netbeans-7.0-ml-php-linux.sh
JDKがデフォルトの場所にインストールされていない場合は、次のようにインストール時にパスを指定します。
# sh netbeans-6.9-ml-php-linux.sh --javahome $HOME/jdk1.6.0_24
使用許諾条項に同意します。
インストール・ディレクトリを確認します。
JDKの場所を確認します。
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を再起動します。
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
などです。
新規のPHPプロジェクトを次のように作成します。
「File」、「New Project」の順にナビゲートするか、「New Project」アイコンをクリックするか、[Ctrl]、[Shift]、[N]を同時に押します。
「PHP」と「PHP Application」を選択します。
「Project name」をACXE
に変更します。
ソース・ファイルを保存するフォルダを選択します。/home/chris/public_html/ACXEなど、Apacheがアクセスできるディレクトリを使用すると、インストール作業が簡単になります。
「PHP Version」をPHP 5.3に設定します。
プロジェクトURLをソースが配置されるディレクトリにマップするように設定します。たとえば、デフォルト以外のApacheポートを使用する場合は、http://localhost:8888/~chris/ACXE/
のようにします。フレームワークは使用しないでください。
プロジェクトが作成され、index.phpファイルがデフォルトNetBeansテンプレートに設定されます。
実行できるかどうかを確認するため、index.php
にコンテンツを配置します。<?php ?>
タグ内のコメント行// put your code here
を、次と置き換えます。
echo "hi";
「Run」から「Run Project」を選択するか、[F6]を押してファイルを実行します。ブラウザ・ウィンドウが開き、新しく追加したメッセージが表示されます。
URLが間違っていて、ディスク上のファイルにマップされない場合は、「Project navigator」でプロジェクト名を右クリックし、「Properties」を選択します。「Run Configuration」を選択し、プロジェクトURLを変更します。
このマニュアルの残りの部分では、「Project navigator」でプロジェクト名を選択してから、「File」、「New File」の順にナビゲートする方法、または「New File」アイコンもしくは[Ctrl]と[N]を同時に押す方法で、必要に応じてACXEプロジェクトにファイルを追加します。