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を使用します。

ソフトウェアの要件

ソフトウェア バージョン URL
Oracle Database 10g 10.2 http://otn.oracle.co.jp/software/products/oracle10g/index.html
Apache HTTP Server 2.0.58 http://httpd.apache.org/download.cgi
PHP Hypertext Processor 5.1.3 http://www.php.net/downloads/

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をダウンロードします。

インストール手順

  1. ルート・ユーザーとしてログインし、次のコマンドを実行します。

        # 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コンポーネントをインストールできます。

  2. 提供されたPHPの初期化ファイルをコピーします。

        # cp php.ini-recommended /usr/local/apache/conf/php.ini
    

    php.iniを編集し、display_errorsを「On」に設定すると、コード内のエラーを調べることができ便利です。

  3. 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.confphp.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」を翻訳し、一部編集を加えたものです。