こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Zend Frameworkでoracle接続

Zend Frameworkを勉強しようと思い始めたばかりのものです。
oracleに繋がらずどこをチェックすればよいのかさっぱりわかりません。
どなたかご教授願えないでしょうか?

zfツールを使い雛形を作って、module で分けてみたり、ヘッダー、フッターをlayoutを使って分けたりと少し前進しました。
次はDB接続だと思い始めたのですが繋がりません。

■環境
CentOS release 5.6 (Final)

■やったこと
1)oracle接続モジュール oci8 をインストール
# export ORACLE_HOME=/opt/oracle/product/10.2.0/db
# pecl install oci8

php.ini に追記
# vi /etc/php.ini
extension=oci8.so

2)ローカルで接続テスト
これは問題なく接続できてるみたいなのです。

# more test.php
<?php
putenv("ORACLE_HOME=/opt/oracle/product/10.2.0/db");
putenv("LD_LIBRARY_PATH=:/opt/oracle/product/10.2.0/db/lib");

// Zend_Dbライブラリの読み込み
require_once 'Zend/Loader.php';
require_once 'Zend/Db.php';

$dbInit = array(
'host' => 'localhost',
'username' => 'usrxx',
'password' => 'usrxx',
'dbname' => 'xxdb'
);

$db = Zend_Db::factory('oracle', $dbInit);
$db->getConnection();
echo 'OK';
$db->closeConnection();

# php test.php
OK

3)Zend Frameworkで接続テスト
IndexController.php の indexAction でやってみたのですがダメなのです。
public function indexAction()
{
$dbInit = array(
'host' => 'localhost',
'username' => 'usrxx',
'password' => 'usrxx',
'dbname' => 'xxdb'
);
$db = Zend_Db::factory('oracle', $dbInit);
$db->getConnection();

$db->getConnection();
echo 'OK';
$db->closeConnection();
}

※/etc/sysconfig/httpdに以下を追加しました
export ORACLE_HOME=/opt/oracle/product/10.2.0/db
export LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/db/lib

実行するとどうしてもエラーとなります。

■エラーメッセージ
An error occurred

Application error

Exception information:

Message: Unknown exception

Stack trace:

#0 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Db/Adapter/Abstract.php(315): Zend_Db_Adapter_Oracle->_connect()
#1 /home/www/zf/application/modules/default/controllers/IndexController.php(30): Zend_Db_Adapter_Abstract->getConnection()
#2 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Controller/Action.php(516): IndexController->indexAction()
#3 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('indexAction')
#4 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#5 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#6 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#7 /home/www/htdocs/shopping/necs/zf/index.php(29): Zend_Application->run()
#8 {main}
Request Parameters:

array (
'controller' => 'index',
'action' => 'index',
'module' => 'default',
)

どこを確認すればよいかのサッパリわからず投稿させていただきました。
何卒よろしくお願いします。

投稿日時 - 2012-04-19 17:36:45

QNo.7429877

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

Zend は使ったことが無いのでよくわかりませんが、少し気になった部分を記載しますので、一度確認してみてください。

> export ORACLE_HOME=/opt/oracle/product/10.2.0/db
> export LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/db/lib

上記の環境変数の設定ですが、下記が正解では?と考えます。

export ORACLE_HOME=/opt/oracle/product/10.2.0/client
export LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/client/lib

ORACLE_HOMEのパスがDBになっていますが、Oracle DBに接続する為に利用するのは「Client」ですのでORCLE_HOMEのパスにはClientのディレクトリを指定するのがセオリーと認識しています。

投稿日時 - 2013-03-28 13:22:25

ANo.1

#回答ではありません

とりあえず相互リンクしておきますね
http://www.phppro.jp/qa/3639

投稿日時 - 2012-04-19 18:08:27