Php尝试通过PDO连接到Oracle 11g - 未知错误

时间:2013-03-05 23:01:43

标签: php oracle pdo oracle11g

我正在尝试通过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 []的未捕获异常'PDOException':pdo_oci_handle_factory:<> (ext \ pdo_oci \ oci_driver.c:579)'in ...

所以这真的没什么好说的。

如果我尝试通过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的路径。我错过了什么吗?

提前谢谢

1 个答案:

答案 0 :(得分:1)

好吧,我想我修好了,所以如果有其他人需要它:

我下载了Oracle Instant Client。在此之后,它仍然抱怨我应该把它放在PATH中,即使它已经存在了。

所以我将Instant Client中的所有文件(可能你并不需要所有文件,但无论如何)复制到apache / bin目录中,并且它有效。