尝试加载php_oci8.dll时出现PHP启动警告

6

我正在使用XAMPP,尝试配置用于sql的Oracle连接。

我取消了extension=php_oci8.dll行的注释,首先出现了一个错误(缺少oci.dll),但后来我从Oracle网站下载了instantclient。我尝试了10.2、11.2和12.1版本,但都没有成功。显然,我已将这些库的路径添加到我的PATH环境变量中。

Apache启动时我收到的警告是:PHP Warning: PHP Startup: in Unknown on line 0

当我尝试连接时出现的错误是:PHP Fatal error: Call to undefined function oci_connect() in ...

我尝试了php_oci8.dllphp_oci8_11g.dll。这些文件位于我的php/ext目录中(它们包含在xampp中),我的instantclient已经添加到了PATH,如果我禁用这些模块,则不会显示警告。我尝试重新启动服务和计算机。

你能帮我找到正确配置的解决方案吗?我正在使用带有管理员权限的Windows 8.1。

顺便说一句,我的phpinfo()显示OCI8已激活(但像oci_connect这样的函数仍然无法工作)。

编辑:当我尝试手动运行PHP时,最终得到的错误显示了问题所在:Unable to load dynamic library 'C:\Program Files (x86)\PHP\ext\php_oci8_11g.dll' - %1 is not a valid Win32 application. in Unknown on line 0。你能帮我找到在哪里下载正确版本吗?


你在重新安装不同版本之前,清理了所有的Oracle安装吗? - Xavier
我根本没有在我的电脑上安装Oracle。我使用VPN连接来连接服务器。我下载了sqldeveloper并且它可以工作(但它并没有安装任何东西)。 - Kelu Thatsall
4个回答

4
64位版本的Instantclient存在问题。如果您遇到��同的问题,请安装32位版本的Instantclient。说实话,最简单的方法就是按照正确的说明来操作:http://www.oracle.com/technetwork/articles/dsl/technote-php-instant-084410.html。我尝试了很多其他建议,但它们都让我陷入困境(不仅因为我使用了不同的位版本,还因为我按照愚蠢的建议到处复制文件,很难纠正)。

1
因为您的Oracle是64位的。卸载它并安装32位版本的Oracle客户端,它就可以工作了。

0
这里有一种替代方法来解决这个问题:安装完整版的Oracle客户端,而不是基本版的压缩包,你可以在Oracle网站上获取(大约1GB):

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle12c-windows-3633015.html

我使用的是Windows 10,Apache 2.4,PHP 7.1(全部为x64),它可以工作。我也尝试了PHP 5.6,它也可以工作。仍然使用来自基本客户端zip的php_oci8_11g.dll以匹配您的php和系统版本。

您可以搜索该网站以查找旧的客户端版本(11g,32位等),但我正在使用12c客户端并访问Oracle 11g企业服务器。

我发现周围有很多相同错误的事例,但没有一个给出了这个解决方案。希望这能帮到你。


0

看起来您的扩展没有正确安装。尝试使用pecl更新或重新安装它。

pecl install extname

你还应该检查php.ini中的extension_dir指令,并检查PHP文件夹是否已添加到路径中。

我尝试升级和安装,但是我收到了以下信息:pecl upgrade oci8 downloading oci8-2.0.6.tgz ... Starting to download oci8-2.0.6.tgz (189,668 bytes) .........................................done: 189,668 bytes 11 source files, building WARNING: php_bin E:\xampp\php\php.exe appears to have a suffix \php.exe, but con fig variable php_suffix does not match ERROR: The DSP oci8.dsp does not exist. - Kelu Thatsall
同时我的 extension_dir 已经正确设置,我的 php/ext 目录也已经添加到了 PATH 中。我还将 PHP 目录添加到了 PATH 中。 - Kelu Thatsall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接