我正在使用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.dll
和php_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
您能帮我找到哪里可以下载正确的版本吗?
答案 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):
我使用Windows 10,Apache 2.4,PHP 7.1(所有x64),它的工作原理。还尝试了PHP 5.6,它也有效。仍然使用基本客户端zip中的php_oci8_11g.dll来匹配您的php和系统版本。
您可以搜索该站点以查找较旧的客户端版本(11g,32位等),但我正在使用de 12c客户端并访问Oracle 11g企业服务器。
我发现了很多同样错误的发生,但没有人给我这个解决方案。希望得到帮助。