我正在尝试通过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的路径。我错过了什么吗?
提前谢谢
答案 0 :(得分:1)
好吧,我想我修好了,所以如果有其他人需要它:
我下载了Oracle Instant Client。在此之后,它仍然抱怨我应该把它放在PATH中,即使它已经存在了。
所以我将Instant Client中的所有文件(可能你并不需要所有文件,但无论如何)复制到apache / bin目录中,并且它有效。