我刚刚在我的 win7 (x64) PC 上安装了一个实际的 XAMPP 来编写一些 PHP 脚本来连接到 Oracle DB。我还安装了正常的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”。
但是我当前的xampp中没有这些dllphp/ext
文件夹(只有一个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问题 https://stackoverflow.com/questions/21584879/xampp-how-to-connect-to-oracle显示在普通客户端上使用评论扩展将不起作用(我也尝试过)。
我试图用谷歌搜索解决方案,但所有“解决方案”都是“安装 win32 即时客户端并启用扩展”。但我不能这样做,因为我的大部分 QA 工作都需要安装和配置 11.2.0-client,而且我的 php/ext-folder 中没有 .dll
我还尝试将 ociw32.dll 从 client/bin 文件夹复制到 php/ext-folder 但随后 apache 说它不是 PHP 库。
那么如何让 PHP oracle 库在 x64 win7 上使用 oci8 for XAMPPWITHOUT安装 win32 Oracle Instant Client 并破坏我当前的设置?
编辑:我也尝试了所描述的步骤在 PHP:安装手册中(帖子作者:samantha dot vincent at gmail dot com) http://php.net/manual/en/oci8.installation.php包括更改我的 apache-http.conf 这也没有帮助。
我也很困惑我的phpinfo()
- 输出如其所说
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"