AWS&PHP&Laravel環境でOracleDBを使用する

はじめに

AWS環境で、PHPとLaravelを使用したWebシステムを構築する際に、
RDSのOracleを使う必要がありました。
しかし、LaravelでサポートされているDBの中にOracleが存在しないため、
私がどう対応したかを備忘録として残しておこうと思います。

環境

PHP:8.3.7
Laravel:11.18.1
EC2:AmazonLinux2023
DB:Oracle(Standard Edition Two)

EC2の設定

nginxやphpなどは既にインストール済みのものとして進めます。

Oracleクライアントのインストール

EC2サーバにOracleのクライアントをインストールします。
現在提供されている最新のもので問題ないと思います。

$ sudo yum install -y php-pear php-devel
$ sudo dnf install -y libnsl
$ sudo curl -L -O https://download.oracle.com/otn_software/linux/instantclient/2111000/oracle-instantclient-basic-21.11.0.0.0-1.x86_64.rpm
$ sudo curl -L -O https://download.oracle.com/otn_software/linux/instantclient/2111000/oracle-instantclient-devel-21.11.0.0.0-1.x86_64.rpm
$ sudo dnf install -y *.rpm
$ sudo pecl install oci8
php.iniの編集

phpでoracleを使えるようにするために、
php.iniに拡張モジュールを記載します。
php.ini内に「Dynamic Extensions」と記載された箇所があるので、
そこに1行追記します。

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
extension=oci8.so ;この行を追記

EC2側で必要な設定は以上です。

Laravelプロジェクトの設定

Oracleデータベースドライバをインストール

Laravel用のOracleデータベースドライバを、
Composerを使用してLaravelプロジェクトにインストールします。
インストールするドライバは下記URLを参照。
https://github.com/yajra/laravel-oci8

composer.jsonのrequireの中に下記のように追記し、
composer installを行います。

"require": {
 "yajra/laravel-oci8": "^11" // この行を追記
}
接続先設定

config/database.phpに、
Oracleの接続先設定を行います。
connectionsの配列の中に、
下記のようにOracleの接続先設定を追記します。

'connections' => [
 'oracle' => [
  'driver' => 'oracle',
  'host' => env('DB_HOST', ''),
  'port' => env('DB_PORT', '1521'),
  'database' => env('DB_DATABASE', ''),
  'schema' => env('DB_DATABASE', ''),
  'service_name' => env('DB_SERVICE_NAME', ''),
  'username' => env('DB_USERNAME', ''),
  'password' => env('DB_PASSWORD', ''),
  'charset' => env('DB_CHARSET', 'AL32UTF8'),
  'prefix' => env('DB_PREFIX', ''),
 ]
]

.envファイルから値を取得するようにしているので、
.envファイルに下記のように記載します。
*部分は各々のRDSの接続先に合わせます。

DB_CONNECTION=oracle
DB_HOST=********** # エンドポイント
DB_PORT=1521
DB_SERVICE_NAME=********** # DB名
DB_DATABASE=********** # スキーマ名
DB_USERNAME=********** # ユーザ名
DB_PASSWORD=********** # パスワード

これで設定は完了です。

おわりに

設定方法を色々と調べたのですが、
どうしても最後の接続先の設定が上手くいかず、
インストールしたOracleのドライバの中身を確認したうえで、
接続先の設定項目を少し変更しています。

本記事が少しでも参考になれば幸いです。


--------------------------
システム開発のご要望・ご相談はこちらから

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です