2

PDO 経由で PHP の Oracle 11g Express Edition データベースに接続しようとしています。xampp がインストールされています。また、(おそらく) 動作する pdo_oci 拡張機能もあり、phpinfo() にも表示されます。私のデータベースは機能しており、SQL コンソールや SQL 開発者を介して接続できます。拡張機能 php_pdo_oci.dll を有効にしました

私のコードは次のとおりです。

$db_username = "system";
$db_password = "mypass";
$db = "oci:dbname=xe";
$conn = new PDO($db,$db_username,$db_password);

次のエラーが表示されます。

致命的なエラー: メッセージ 'SQLSTATE[]: pdo_oci_handle_factory: <> (ext\pdo_oci\oci_driver.c:579)' を含む例外 'PDOException' がキャッチされません ...

したがって、これは本当に何も伝えません。

oci_connect 経由で接続し、拡張機能 php_oci8_11g.dll を有効にする (そして pdo 拡張機能を無効にする) 場合は、次のコードを使用します。

$conn = oci_connect('system', 'mypass', 'localhost/XE');

次のエラーが表示されます。

警告: oci_connect() [function.oci-connect]: OCIEnvNlsCreate() が失敗しました。システムに問題があります - PATH に Oracle Instant Client ライブラリのあるディレクトリが含まれていることを確認してください...

では、Oracle Instant Client とは何でしょうか? Oracle Express Edition のみをダウンロードし、環境変数として ORACLE_HOME と LD_LIBRARY_PATH を追加し、PATH へのパスも追加しました。何か不足していますか?

前もって感謝します

4

1 に答える 1

2

さて、私はそれを修正したと思うので、他の誰かがそれを必要とする場合:

Oracle Instant Client をダウンロードしました。この後、すでにそこにあったとしても、その場所をPATHに入れる必要があるとまだ不平を言っていました。

そこで、Instant Client のすべてのファイル (おそらくすべては必要ありませんが、とにかく) を apache/bin ディレクトリにコピーすると、うまくいきました。

于 2013-03-06T11:31:29.743 に答える