为了从 php 访问远程 Oracle 数据库,我必须激活扩展 php_oci8_12c
。但是当我这样做时,它不会出现在 phpinfo()
中。
另一方面,我在 php 日志中得到了错误消息:
[13-Jan-2017 08:39:48 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'c:/wamp64/bin/php/php7.0.10/ext/php_oci8_12c.dll' - %1 is not a Valid win32 application
我使用 php 5.6.25 和 wampserver 3.0.6(64 位)。我该如何解决这个问题?
最佳答案
好吧,我也遇到了这个错误并设法修复了它。
在下载各种 Oracle 客户端版本之前,只需在 配置命令 部分查看您的 http://localhost/?phpinfo 设置。
这将告诉您使用哪个版本的 Oracle 来构建您的 WAMP 服务器。
上图显示了这两行:
"--with-pdo-oci=c:\php-sdk\oracle\x64\instantclient_12_1\sdk,shared"
"--with-oci8-12c=c:\php-sdk\oracle\x64\instantclient_12_1\sdk,shared"
很明显告诉我们使用的 InstantClient 是 64 位的。
InstantClient 12.1 x64 有两个版本:12.1.0.2.0 和 12.1.0.1.0
我用 12.1.0.2.0 版本测试过,失败了。
之后,我用 旧版本 12.1.0.1.0 版本 进行了测试并成功了。
从 Instant Client for Microsoft Windows (x64) 下载并将以下文件解压到“c:\oracle”:
这将创建以下文件夹“C:\Oracle\instantclient_12_1”。
使用“Windows 命令提示符”(WIN+R CMD)转到上面的文件夹并执行 SQLPLUS:
您必须能够连接。
最后,将“C:\Oracle\instantclient_12_1”文件夹添加到 PATH 环境变量 中,将其放在最左边的位置。
关闭您的 WAMP 服务器 。
是的关闭它,因为环境变量仅在启动时读取。
所以重启服务可能会失败,导致你得到错误的结果。
重新启动后,您的 PHPINFO 将显示已加载的 OCI8 和 PDO_OCI。
我希望它有帮助!
关于php - 'c :/wamp64/bin/php/php7. 0.10/ext/php_oci8_12c.dll' - %1 不是有效的 win32 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41632584/