X

A blog about Oracle Technology Network Japan

  • April 16, 2020

Oracle Linux Yumサーバーのパッケー ジを使用したPHP 7とOracleデータベ ースとの接続

Guest Author

※本記事は、Sergio Leunissenによる"Connect PHP 7 to Oracle Database using packages from Oracle Linux Yum Server"を翻訳したものです。


Sergio Leunissen

注:この記事は更新されています。現在この記事には、PHPの最新リリースと、19cより導入されているOracle Instant Clientの簡易的なインストール・ガイドが含まれています。

 

当社は先般、Oracle Linux YumサーバーのリポジトリにPHP 7.4を追加しました。これらのリポジトリには、PHPアプリケーションをOracleデータベースと接続するためのPHP OCI8拡張も含まれています。


この記事では、PHP 7.4、PHP OCI8、およびOracle Linux上のOracle Instant Clientをインストールして、PHPとOracleデータベースを接続するための方法について説明いたします。なおこの記事では、Oracle Cloud Free Tierに含まれる無料のAutonomous Databaseを使用しています。


Oracle Instant Clientのインストール


Oracle Instant Client RPMはOracle Linux Yumサーバーでも利用可能です。これを利用するには、以下のとおり、まずoracle-release-el7パッケージをインストールして、適切なリポジトリをセットアップする必要があります。

$ sudo yum -y install oracle-release-el7
$ sudo yum -y install oracle-instantclient19.5-basic 


SQL*Plus(健全性チェックに便利な場合があります)を使用できるようにしたい場合は、以下のとおりSQL*Plus RPMもインストールします。

$ sudo yum -y install oracle-instantclient19.5-sqlplus 

 

スキーマの作成とHRサンプル・オブジェクトのインストール(任意)


すでにデータベースに存在している任意のスキーマを使用することもできます。ここでは、github.comにあるOracle Databaseのサンプル・スキーマからHRスキーマを使用します。すでにスキーマとそれに対応するデータベース・オブジェクトがある場合は、このステップを省略してください。

$ yum -y install git 
$ git clone https://github.com/oracle/db-sample-schemas.git 
$ cd db-sample-schemas/human_resources


SYSTEM(Autonomous Databaseを使用している場合はADMIN)として、ユーザー「PHPTEST」を作成します。

SQL> grant connect, resource, create view to phptest identified by <YOUR DATABASE PASSWORD>; 
SQL> alter user PHPTEST quota 5m on USERS; 


このサンプルのようにAutonomous Databaseを使用している場合は、上の表領域をDATAに変更します。

SQL> alter user phptest quota 5m on DATA; 


ユーザー「PHPTEST」としてスクリプト「hr_cre.sql」と「hr_popul.sql」を実行し、HRデータベース・オブジェクトの作成と移入を行います。

SQL> connect phptest/<YOUR DATABASE PASSWORD>@<YOUR CONNECT STRING>
SQL> @hr_cre.sql
SQL> @hr_popul.sql 


PHPおよびPHP OCI8のインストール


PHP 7.4をインストールするには、まず最新のoracle-php-release-el7パッケージがインストールされていることを確認する必要があります。

$ sudo yum install -y oracle-php-release-el7


次に、インストール済みのOracle Instant Clientに対応したPHPおよびPHP OCI8拡張をインストールします。

$ sudo yum -y install php php-oci8-19c 


以下のPHPコード・スニペットを実行すると、PHPをデータベースに接続できること、およびデータを戻せることを確認できます。必要であれば、スキーマと接続文字列を置き換えるようにします。

<!--?php
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    $conn = oci_connect('phptest', '<YOUR DATABASE PASSWORD>', '<YOUR CONNECT STRING>');
    $stid = oci_parse($conn, 'SELECT last_name FROM employees');
    oci_execute($stid);
    echo "\n";
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
      foreach ($row as $item) {
        echo $item ."\n";
       }
    }
?-->


上のコードに基づいてファイル「emp.php」を作成します。


実行

$ php emp.php 


これにより以下が生成されるはずです。

King
Kochhar
De Haan
Hunold
Ernst
Austin
Pataballa
Lorentz
Greenberg
Faviet
Chen
Sciarra
...

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.