今回はWebアプリを作るときに利用すると便利なフレームワークである CakePHP と Oracle DB の連携を行うまでの手順をまとめます。
前回は Apache + PHPプログラム + Oracle の連携ができるように設定し、実際にブラウザ上から Oracle のデータを参照するところまで行いました。
まず、CakePHP 本体をダウンロードします。 この記事で取り扱う CakePHP は日本語版のリリースバージョン 2.4.10 です。
公式ページ「http://cakephp.jp」 からダウンロードできます。
ダウンロードした圧縮ファイルの cakephp-2.4.1.zip を展開し、cakephp-2.4.1 以下のファイルを全て eclipse の workspace のプロジェクト「testphp」にコピーします。
コピーが終わったら、Apacheを立ち上げブラウザからCakePHPに初アクセスします!
この状態で、Webサーバの Apache を立ち上げ、ローカルのWebサーバにブラウザ経由でアクセスすると、以下のようなページが表示されます。
※Oracle や PHP、Apache の設定は当連載記事の前ページで実施しています。正常に画面が開けないようでしたら、連載の前ページを見直してみてくださいね。
とりあえずCakePHP自体は動作しているようです。
いくつか画面上に赤い枠で警告文が出ていますが、とりあえず問題ありません。セキュリティのために暗号化プログラムのソルト値を変更してね、という内容なのですが、今回の本筋とは関係ないので詳細は割愛します。
このままではまだ CakePHP から Oracle DB に接続できてはいません。
Eclipse に導入した CakePHP フォルダの /app/Config/database.php.default
というファイルをリネームし、同じフォルダ内に database.php
というファイル名になるよう変更しましょう。
ファイル名を変更したら、database.php の中身を開いてDB接続用の変数内容をOracle DB 用に書き換えます。
/** Oracle に接続するテスト用設定 */
var $default = array(
'datasource' => 'Database/Oracle',
'driver' => 'oracle',
'connect' => 'oci_connect',
'persistent' => true,
'host' => '',
//'port' => '1521', // localなら指定しなくてもつながる。
'login' => 'testap', // 設定したユーザ名
'password' => 'testpw', // 設定したパスワード
'database' => '',
'prefix' => '',
//'encoding' => 'UTF8', // oracle接続用では見ていない変数だった?
'charset' => 'AL32UTF8' // こちらの設定が使用されるみたい。
);
しかし、これだけでは Oracle にうまく繋がらず。 実際にデータベースの中身を見ようとすると、 「Datasource に Oracle 用の DBO レイヤーが必要なのに、存在しない!」と怒られます。
ですので、 ひとつ前のバージョンである CakePHP ver1.2.0.4041 を別途ダウンロードして、zip解凍し、いい感じに記載された Oracle.php (DBOレイヤー)ファイルを持ってきます。
/lib/Cake/Model/Datasource
の中に Oracle.php
をコピー。
再度、ブラウザからアクセスしてみると、
やりました!接続できたとのこと。
デフォルトでは CakePHP はSQL文と結果を表にして、ページ最下部にくっつけてくれるので、確認してみると、
画面を表示した時にCakePHPが裏側で ALTER SESSION
のSQL文で、日付フォーマットを変更するSQLを Oracle に送信していることがわかります。
とりあえず、CakePHP から Oracle 疎通もできたので、今回はここまでです。
おつかれさまでしたー!
更新日 | 更新内容 |
---|---|
2013.10.13 | ページ公開 |
2018.3.17 | スマホからレイアウトが崩れて読みにくいので修正。ついでに文章構造と文章本体も自分以外の人が読めるように訂正。 |
コメント、ありがとうございます。
ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。
Twitter:@NodachiSoft_jpお名前:以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください
お名前: