はじめに
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のドライバの中身を確認したうえで、
接続先の設定項目を少し変更しています。
本記事が少しでも参考になれば幸いです。