Category Archives: OracleDB

【Webアプリ】開発環境をイチから作成・その8(CakePHP + Oracle連携)

今回は CakePHP と Oracle 連携を行います。
前回は Apache + PHP + Oracle 連携まで設定し、ブラウザ上から Oracle のデータを
参照するところまで行いました。

まず、CakePHP 本体をダウンロードします。
日本語版のリリースバージョンは 2.4.10 です。
http://cakephp.jp からダウンロードします。

dev_setting_07_cakephp_01

ダウンロードした cakephp-2.4.1.zip を解凍し、
cakephp-2.4.1以下のファイルを全て eclipse の workspace のプロジェクト「testphp」にコピーします。

dev_setting_07_cakephp_02

この状態で、ローカルにアクセスすると、以下のようなページが表示されます。
dev_setting_07_cakephp_03

とりあえずCakePHP自体は動作しているようです。
いくつかの警告文が出ていますが、とりあえず問題ありません。

Eclipse に導入した CakePHP フォルダの/app/Config/database.php.default
というファイルをリネームし、 database.php に変更します。

DB接続用の変数内容をOracle用に書き換えます。

/** 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 を別途ダウンロードして、Oracle.php ファイルを持ってきます。

/lib/Cake/Model/Datasource に Oracle.php をコピー。

再度、ブラウザからアクセスしてみると、
dev_setting_07_cakephp_04
接続できたとのこと。
デフォルトでは CakePHP はSQL文と結果を表にして、ページ最下部にくっつけるので、確認してみると、
dev_setting_07_cakephp_05

ALTER SESSION で、日付フォーマットを変更するSQLを Oracle に送信していることがわかります。

とりあえず、CakePHP から Oracle 疎通もできたので、今回はここまで。