PHPアプリケーションの構築

Autonomous DatabaseにアクセスするPHPアプリケーションを構築するには、まず、Autonomous Databaseの継続的な可用性および高パフォーマンスの機能を利用できるデータベース・アクセスをサポートするように開発システムを構成します。

開発システムを構成した後、継続的な可用性および高パフォーマンスの機能を利用するように、アプリケーション内のデータベース接続およびSQL文をコーディングします。

PHP開発システムの構成

PHPアプリケーションがAutonomous Databaseの継続的可用性および高パフォーマンス機能を利用できるように開発システムを構成するには、次のステップを実行します。

  1. PHPをダウンロードしてインストールします。
  2. Oracle Instant Clientをダウンロードしてインストールします。
  3. PHP OCI8をダウンロードしてインストールします。
  4. データベースのクライアント資格証明をダウンロードして、Oracle Instant Clientで使用できるようにします。

始める前に

開発システムを正常に構成するためには、それが特定の基準を満たしている必要があります。

PHPのダウンロードとインストール

使用しているシステムのOSおよびアーキテクチャ用のPHPをダウンロードしてインストールします:

  • Oracle Linux:

    次のコマンドを実行して、PHPのダウンロードとインストール、およびPEARのダウンロードとインストールを行い、PHPのpeclパッケージ管理コマンドを取得します:

    sudo dnf install -y oracle-release-el8 oracle-php-release-el8
    sudo dnf install -y php php-devel php-xml dtrace-utils
    wget http://pear.php.net/go-pear.phar
    sudo php go-pear.phar
  • その他のOSesおよびアーキテクチャ:

    PHPの「Installation and Configuration」ページに移動し、システムのOSおよびアーキテクチャの手順に従います。

Oracle Instant Clientのダウンロードとインストール

使用しているシステムのOSおよびアーキテクチャ用のOracle Instant Client Basicパッケージをダウンロードしてインストールします:

  • Oracle Linux:

    次のコマンドを実行して、Oracle Instant Client Basicパッケージをダウンロードしてインストールします:

    sudo dnf -y install oracle-release-el8
    sudo dnf -y install oracle-instantclient21.13-basic oracle-instantclient21.13-devel

    (すべてのインスタント・クライアント・パッケージのリストを確認するには、http://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/index.htmlに移動します。)

  • その他のOSesおよびアーキテクチャ:

    1. 「Oracle Instant Clientのダウンロード」ページに移動し、使用しているシステムのOSおよびアーキテクチャ用のダウンロードを選択します。

    2. ダウンロード・ページでOracle Technology Networkライセンス契約に同意し、最新バージョンのBasicパッケージSDKパッケージをダウンロードしてから、ダウンロード・ページの下部にある指示に従ってインストールします。

PHP OCI8のダウンロードとインストール

使用しているシステムのOSおよびアーキテクチャ用のPHPのOCI8拡張機能をダウンロードしてインストールします:

  • Oracle Linux:

    次のコマンドを実行して、OCI8拡張機能の最新バージョンをダウンロードしてインストールします:

    sudo PHP_DTRACE=yes pecl install oci8
    sudo sh -c "echo extension=oci8.so > /etc/php.d/20-oci8.ini"
    sudo sh -c "echo oci8.events = On > /etc/php.d/20-oci8.ini"

    アプリケーションでOracle環境変数が必要な場合は、/etc/sysconfig/httpd構成ファイルにそれを追加します。例:

    NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
    ORA_SDTZ=UTC

    このような変数を追加した場合は、新しい変数を読み取るためにApache HTTPサーバーを再起動します:

    sudo systemctl restart httpd
  • その他のOSesおよびアーキテクチャ:

    1. 次のコマンドを実行します

      pecl install oci8
    2. 次の行をPHPインストールのphp.iniファイルに追加します:

      extension=oci8.so
      oci8.events = On

データベースのクライアント資格証明のダウンロードとインストール

  1. データベースのクライアント資格証明を含むzipファイルをコンピュータ上の安全なディレクトリにダウンロードします。

    このzipファイルは、Oracle Cloudコンソールのデータベースの「詳細」ページからダウンロードできます。次のように資格証明をダウンロードします。

    1. WebブラウザでOracle Cloudにサインインし、Autonomous Databaseの「詳細」ページに移動します。

    2. 「DB接続」をクリックします。

    3. 「データベース接続」ページで、「ダウンロード」をクリックします。

    4. 「ウォレットのダウンロード」ダイアログで、「パスワード」フィールドにウォレット・パスワードを入力し、「パスワードの確認」フィールドでパスワードを確認します。

      パスワードは8文字以上の長さで、少なくとも1つの文字と、1つの数字または1つの特殊文字を含める必要があります。

    5. 「ダウンロード」をクリックして、クライアント資格証明zipファイルを安全なディレクトリに保存します。

  2. zipファイルをダウンロードした後は、次のステップに従います:

    1. クライアント資格証明zipファイルを解凍します。

    2. クライアント資格証明内に提供されているsqlnet.oraファイルを編集し、"?/network/admin"を、クライアント資格証明の解凍先ディレクトリのフルパスに置き換えます。例: 変更前:

      (DIRECTORY="?/network/admin")

      変更後:

      (DIRECTORY="/users/jdoe/adbcredentials")
    3. TNS_ADMIN環境変数を作成し、その値をクライアント資格証明の解凍先ディレクトリのフルパスに設定します。

データベース接続およびSQL文のコーディング

Autonomous Databaseへの PHPアプリケーションの接続をサポートするように開発システムを構成したあと、次のガイドラインに従って、アプリケーションからデータベースへの接続のパフォーマンスと継続性を向上させます。

  • 接続プールを使用します。
  • FAN (高速アプリケーション通知)を有効にします。
  • 実行する操作に最も適した事前定義済データベース・サービスを使用します。事前定義済データベース・サービスの詳細は、Autonomous Databaseの事前定義済データベース・サービス名を参照してください。

PHPの場合、PHPのOracle OCI8拡張機能のダウンロードおよびインストールの一部としてoci8.events = On行をphp.iniファイルに追加するときに、FANを有効にします。

OCI8インタフェースは、特定の接続プーリング・コールを公開しません。かわりに、内部で接続プールを使用します。接続プーリングのメリットを得るには、oci_pconnect()ファンクションを使用して、複数のHTTPリクエストにわたって使用できる永続的な接続を作成または再利用します。

例:

$connection = oci_pconnect("appuser", getenv("MY_PASSWORD_ENV_VAR"), "tp_tls");

この例では、tp_tlsデータベース・サービスへの永続的な接続を作成します。

その他のリソース

PHPのOracle OCI8拡張機能の詳細は、Oracle OCI8ページを参照してください。

Oracle DatabaseでのPHPの使用の詳細は、『アンダーグラウンドPHPおよびOracleマニュアル』を参照してください。