このページでは、WindowsOS上に構築したLaravel環境からOracleのDBに接続するための方法を紹介してます。
得られる結果
Laravelのプロジェクト内から、ローカルもしくはリモートのOracleDBに接続し、selectやinsertなどの操作をすることができます。
OracleDBに接続するまでに必要な作業
基本的に以下の作業が必要になります。
- Laravel環境を構築
- Oracle Instant Clientをダウンロード
- Oracle Instant Clientのdllをコピー(配置)
- PHP.iniの設定
- Laravel環境にOci8関連モジュールをインストール
- Oracleに接続
Laravel環境を構築
今回、LaravelのインストールはよくあるComposerを使用した方法で構築しました。
(例)composer create-project laravel/laravel=6.* [プロジェクト名] –prefer-dist
Oracle Instant Clientをダウンロード&dllの設置
公式サイトから「Oracle Instant Client」をダウンロードします。
zipファイルなので解凍します。
解答したフォルダ内からdllファイルを(10個)コピーして、PHPフォルダ内に配置します。
PHP.iniの設定
php.iniファイルに以下を追記します。
extension=oci8_12c
extension=pdo_oci
※拡張子の.dllは記載しません
※その他プロジェクトの目的に応じて各種モジュールを有効にする必要あり
Laravel環境にOci8関連モジュールをインストール
以下のコマンドでLaravel環境で使用するOci8関連ライブラリをインストールします。
composer require yajra/laravel-oci8:"7.*"
/config/app.phpの各種モジュールを読み込ませている箇所に下記を追記します。
Yajra\Oci8\Oci8ServiceProvider::class,
Oracleに接続
Laravelプロジェクトで.envファイルなどでDBの接続情報を定義します。
あとはプログラム内からOracleのDBに接続し、正常にselectなどが実行できれば完了です。
各ソフトウェアのバージョン
今回、各ソフトウェアは以下のバージョンを使用しました。
- OS:Windows10(64bit)、Windows7(64bit)
- Apache:2.4
- PHP:7.4
- Laravel:6、7
- Oracle11g
- Oracle Instant Client:12_1(64bit)
まとめ
今回とくにハマった部分は、Oracle Instant Clientのインストール(dllの設置)部分でした。
ネット上では、「C直下に設置してPathを通す」という話がたくさんありました。
ですが、僕の場合はうまくOracleに接続できませんでした。
結果、PHPのフォルダ内(直下)に「zipを解凍したOracle Instant Clientフォルダ内のdll」10個をコピーして設置するだけで無事にDBに接続できました。
もし同じような環境で困っている方がおりましたら、参考になればと思います。
コメント