0

CakePHP アプリから Access (MDB) データベースを使用しようとしています。Windows マシンでは、これで問題なく動作します。Unixodbc を使用する Linux マシンでは、これはまったく機能しません。エラーは次のとおりです。

警告 (2): odbc_connect() [function.odbc-connect]: SQL エラー: [unixODBC][Driver anager]Data source name not found, and no default driver specified, SQL 状態 IM002 in SQLConnect [APP/vendors/adodb/ drivers/adodb-odbc.inc.php、60行目]

CakePHP データソースの定義は次のとおりです。

             $default = array(
                            'driver' => 'adodb',
                            'connect'  => 'access',
                            'host' => "Driver=[MDBODBC]; Dbq=".$filePath.";Uid=Admin;Pwd=;}",
                            'login'    => 'Admin',
                            'password' => '',
                            'database' => ''
                    );

この構成の何が問題になっていますか?

4

1 に答える 1

2

'host' 要素は、閉じ括弧が一致しないため、一般的に奇妙に見えます。

行番号 60 (エラー メッセージから) は、dodb-odbc.inc.php でどのように表示されますか? の呼び出しに使用する構成配列の要素はどれodbc_connectですか? 呼び出しをodbc_connect ドキュメントの例と比較してください。

odbc_connect直接接続してみましたか?

余談ですが、私のバージョンの Cake には、実際には Cake フレームワーク内に ODBC DBO ドライバーがあります。

cake/libs/model/dbo/dbo_odbc.php

を使用していますodbc_pconnect。そこで$dsnは、最初の引数である文字列はodbc_pconnect、「ホスト」要素ではなく、構成配列の「データベース」要素から取得されます。

サードパーティのソリューションを使用する理由がわかりません

app/vendors/adodb/drivers/adodb-odbc.inc.php

特に、John Lim ADOdb Library for PHP の Date Library を使用すると、リモートの攻撃者が機密情報を入手できるためです。

于 2009-11-13T13:24:53.177 に答える