| Oracle Database、PHP、ApacheのLinuxへのインストール
著者: Robert Clevenger 更新者: Christopher Jones、2006年6月
PHPを使用してOracle Databaseと対話する準備はできていますか。
このドキュメントでは、Oracle Database、Apache HTTP Server、PHPをApacheモジュールとしてLinuxにインストールするために必要な手順を説明します。Oracle Databaseで使用できるLinuxのバージョンについては、OTNのLinux Technology Centerで確認してください。ここに示す例では、Red Hat Enterpise Linux AS 4.0を使用します。
ソフトウェアの要件
Oracle Databaseのインストール
Oracle Databaseのインストールには、2つの方法があります。1つは、データベースをLinuxマシンにローカルにインストールする方法で、もう1つは、ネットワーク上の別のマシンに配置されたOracleサーバーを使用する方法です。使用しているデータベースがリモートの場合は、Installing PHP and the Oracle 10g Instant Client for Linux and Windowsを参照してください。
Oracle Database 10g をローカルにインストールする方法については製品マニュアルhttp://otn.oracle.co.jp/document/products/oracle10g/index.htmlを参照してください。
Apache HTTP Serverのインストール
Oracle Databaseのインストールに続いて、Apacheをインストールします。PHPはApacheにインストールされるため、まずApacheをインストールしてからPHPをインストールする必要があります。
ApacheのWebサイトからhttpd-2.0.58.tar.bz2をダウンロードしてから、ルート・ユーザーとしてログインし、次のコマンドを実行します。 # tar -jxvf httpd-2.0.58.tar.bz2
# cd httpd-2.0.58
# ./configure --prefix=/usr/local/apache --enable-module=so
# make
# make install
Webサーバーを構成する際に、「--enable-module=so」オプションを使用すると、PHPを動的共有オブジェクト(DSO)としてコンパイルできます。「--prefix=」オプションを使用すると、make installコマンド実行時に、Apacheのインストール場所が設定されます。
UNIXシステムのtarコマンドを使い慣れている方は、tarファイルの抽出にbunzip2を起動する必要がないことを不思議に思われるかもしれません。Linuxには、tarのGNUバージョンが含まれており、圧縮されたtarファイルを自動的に解凍するjフラグがあります。この圧縮されたファイルをダウンロードした場合、このフラグではなくzフラグが使用されている可能性があります。
注意: PHP拡張機能のほとんどはスレッドセーフではないため、Apache 2の場合、デフォルトのprefork MPM(Multi-Processing Module)を使用する必要があります。
Apacheの開始と停止
apachectlスクリプトを使用してApacheを起動および開始します。 # /usr/local/apache/bin/apachectl start
ブラウザを開いてhttp://localhost/にアクセスし、使用しているマシンでApacheが稼働していることを検証してください。
PHPに対応する構成ができるように、Apacheを停止します。 # /usr/local/apache/bin/apachectl stop
PHPのインストール
PHPのコンパイルを省略するには、ビルトイン・パッケージZend Core for Oracleを使用して、そのインストール手順に従ってください。
PHPのコンパイルを省略しない場合は、PHPのダウンロード・ページからphp-5.1.3.tar.bz2をダウンロードします。
インストール手順
-
ルート・ユーザーとしてログインし、次のコマンドを実行します。 # tar -jxvf php-5.1.3.tar.bz2
# cd php-5.1.3
# export ORACLE_HOME=/u01/app/oracle/product/10.2.0/server
# ./configure \
--with-oci8=$ORACLE_HOME \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-config-file-path=/usr/local/apache/conf \
--enable-sigchild
# make
# make install
注意: ファイアウォールを使用している場合は、使用しているプロキシ・サーバーにあわせて環境変数http_proxyを設定してから、make installを実行する必要があります。これにより、PHPのPEARコンポーネントをインストールできます。
-
提供されたPHPの初期化ファイルをコピーします。 # cp php.ini-recommended /usr/local/apache/conf/php.ini
php.iniを編集し、display_errorsを「On」に設定すると、コード内のエラーを調べることができ便利です。
-
Apacheの構成ファイル/usr/local/apache/conf/httpd.confを編集し、次の行を追加します。 #
# This next section will call PHP for .php, .phtml, and .phps files
#
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php-source .phps
#
# This is the directory containing php.ini
#
PHPIniDir "/usr/local/apache/conf"
PHPのインストールでLoadModule行が挿入されていない場合は、次の行も追加してください。 LoadModule php5_module modules/libphp5.so
Apache HTTP Serverの再起動
PHPインストールをテストするためには、この時点でApache Serverの再起動が必要です。 # /usr/local/apache/bin/apachectl start
注意: Oracle Database 10.2を使用している場合は、Oracleディレクトリに対するアクセス権を「nobody」に設定する必要があります。Oracle 10.2.0.2の場合は、これを設定するスクリプト$ORACLE_HOME/install/changePerm.shがあります。
エラーがある場合、画面に表示されます。このエラー・メッセージは、/usr/local/apache/logs/error_logにも記録されていることがあります。エラーが発生した場合は、httpd.confとphp.iniも調べ、問題を解決してください。
Apacheを起動する場合、ORACLE_HOMEが定義されている必要があります。その他の必須のOracle環境変数も、Apacheを起動する前に設定する必要があります。これらは、$ORACLE_HOME/bin/oracle_env.shスクリプトまたは/usr/local/bin/oraenvスクリプトで設定される変数と同じです。
Apacheを簡単に起動するために、Apacheを起動するスクリプトを作成することもできます。筆者は、このスクリプトを作成しstart_apacheという名前を付けました。 #!/bin/sh
ORACLE_HOME=/u01/app/oracle/product/10.2.0/server
export ORACLE_HOME
echo "Oracle Home: $ORACLE_HOME"
echo Starting Apache
/usr/local/apache/bin/apachectl start
Oracle DatabaseでのApacheとPHPのテスト
Oracle DatabaseにおけるPHPのテストは簡単です。PHPファイルをhtdocsディレクトリに配置するのみです。このディレクトリは、通常/usr/local/apache/htdocsにあります。
ここでは、2つのファイルを使用します。1つは、PHPの基本インストールのテストに使用します。ブラウザでhttp://localhost/phpinfo.phpにアクセスし、このファイルを開きます。PHPがインストールされている場合は、ページ全体にPHP構成情報が表示されます。 phpinfo.php <?php
phpinfo();
?>
「oci8」というタイトルのセクションを確認します。
oci8test.php
このファイルを開くと、HRユーザーが所有するEMPLOYEES表のNAME列とSALARY列が表示されます。そのためには、HRスキーマがインストールされていることが必要です。スキーマがインストールされていない場合は、スクリプトを変更する必要があります。HRスキーマは、Oracle Databaseに付属しています。アクセス権のロック解除およびパスワードの設定は、Oracle Enterprise Managerの管理画面より行うことができます。
このファイルでは、PHP4スタイルの関数名(ocilogonなど)を使用します。PHP5では、関数名はoci_connectのように標準化されましたが、前のバージョンの関数名も使用できます。
Oracle Databaseでは、データベース接続文字列は、"//oracle_database_server_address/service_name"です。
この例ではlocalhost(127.0.0.1)に構成されたORCLインスタンスに接続します。 <?php
$db_conn = ocilogon("hr", "your_hr_password", "//127.0.0.1/ORCL");
$cmdstr = "select last_name, salary from employees";
$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);
$nrows = ocifetchstatement($parsed, $results);
echo "<html><head><title>Oracle PHP Test</title></head><body>";
echo "<center><h2>Oracle PHP Test</h2><br>";
echo "<table border=1 cellspacing='0' width='50%'>\n<tr>\n";
echo "<td><b>Name</b></td>\n<td><b>Salary</b></td>\n</tr>\n";
for ($i = 0; $i < $nrows; $i++ )
{
echo "<tr>\n";
echo "<td>" . $results["LAST_NAME"][$i] . "</td>";
echo "<td>$ " . number_format($results["SALARY"][$i], 2). "</td>";
echo "</tr>\n";
}
echo "<tr><td colspan='2'> Number of Rows: $nrows</td></tr></table>";
echo "<br><em>If you see data, then it works!</em><br></center></body></html>\n";
?>
まとめ
これで、Oracle Database、Apache HTTP ServerとPHPがインストールおよび構成されました。この時点で、OracleプラットフォームでPHPアプリケーションを作成する準備ができています。
PHPとOracleの詳細は、OTNのPHP Developer Centerを参照してください。
Robert Clevenger: 1997年に入社したオラクル社のOracle Fusion Middlewareのアーキテクト。 Christopher Jones: 1990年に入社したオラクル社のオープン・ソースのエバンジェリスト。
※本資料は、Oracle Corporation発行の「Installing Oracle, PHP, and Apache on Linux」を翻訳し、一部編集を加えたものです。 |