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

时间:2013-12-29 13:01:28

标签: php oracle oci

我正在使用XAMPP并尝试为sql配置Oracle连接。

我取消注释了行extension=php_oci8.dll,最初它最终出现了错误(缺少oci.dll),但后来我从Oracle网页下载了instantclient。我尝试使用版本10.2,11.2和12.1,但都没有工作。显然,我已将这些库的路径添加到我的PATH env变量。

我在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您能帮我找到哪里可以下载正确的版本吗?

4 个答案:

答案 0 :(得分:3)

64位版本的instantclient存在问题。如果您遇到同样的问题,请安装32位版本的instantclient。

说实话,最简单的方法就是遵循正确的指示:http://www.oracle.com/technetwork/articles/dsl/technote-php-instant-084410.html

我尝试了很多其他建议而且他们都对我非常不好(不仅仅是因为我使用了不同的位版本 - 我还是在愚蠢的建议之后将文件复制到各地并且很难纠正它)

答案 1 :(得分:1)

因为您的Oracle是64位。删除它并安装32位版本的Oracle客户端,它将起作用。

答案 2 :(得分:0)

看起来您的扩展程序安装不正确。尝试更新它或使用pecl与

重新安装它
pecl install extname

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

答案 3 :(得分:0)

还有另一种方法可以解决这个问题:安装完整的Oracle客户端,而不是基本的zip,你可以在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位等),但我正在使用de 12c客户端并访问Oracle 11g企业服务器。

我发现了很多同样错误的发生,但没有人给我这个解决方案。希望得到帮助。