我刚刚在win7(x64)PC上安装了一个通用XAMPP,以编写一些PHP脚本来连接到Oracle数据库。我还安装了一个普通的oracle 11.2.0客户端(正确设置了PATH和ORACLE_HOME)。该客户端用于我的所有其他工作,没有任何问题。
当我尝试连接到Oracle DB时,PHP失败Fatal error: Call to undefined function oci_connect() in
。我记得几年前在x32 winXP PC上做同样的事情时,必须在php.ini中启用“ oci8-extensions”。但是我当前的xamppphp/ext
文件夹中没有这些dll (只有一个php_oci8_12c.dll
apache启动时会抛出一些未知功能的错误,并且是针对oracle 12而不是11),而php.ini也表示仅即时客户端需要它们。 。
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
同样,此SO-问题表明,将注释扩展名与普通客户端一起使用将不起作用(我也尝试过)。
我试图用谷歌搜索解决方案,但所有“解决方案”都是“安装win32 Instant Client并启用扩展”。但我无法执行此操作,因为我的大多数质量检查工作都需要安装并配置11.2.0-client,而且我的php / ext-folder中也没有.dll
我还尝试将ociw32.dll从client / bin文件夹复制到php / ext-folder,但是随后apache表示这不是PHP库。
那么,如何在不安装win32 Oracle Instant Client并破坏当前设置的情况下,使PHP oracle库在x64 win7上将oci8用于XAMPP ?
编辑:我还尝试了PHP:安装手册(在gmail dot com上的samantha dot vincent)中描述的步骤,包括更改了我的apache-http.conf也无济于事。
我也对我的phpinfo()
-Output感到困惑
Configure Command "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared"
我终于找到了解决方案:
我从“ PECL :: PAckage :: oci8 :: 2.0.8”(在我的情况下为32位,线程安全的DLL)中下载了实际的OCI-DLL ,然后;
从该行中删除了
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
我还在我的apache的http.conf中添加了以下几行
SetEnv ORACLE_BASE "C:/oracle/"
SetEnv ORACLE_HOME "C:/oracle/product/11.2.0/client_1"
之后,我重新启动了apache,请确保我的连接别名可能已放在我的计算机中tsnames.ora
,然后可以使用oci8-functions来解决任何问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句