php - 'c :/wamp64/bin/php/php7. 0.10/ext/php_oci8_12c.dll' - %1 不是有效的 win32 应用程序

标签 php oracle wampserver oracle-call-interface php-5.6

为了从 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 服务器。

WAMP 3.0.6 PHPINFO

上图显示了这两行:

"--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”:
  • Instantclient-basic-windows.x64-12.1.0.2.0.zip
  • Instantclient-sqlplus-windows.x64-12.1.0.2.0.zip
  • Instantclient-sdk-windows.x64-12.1.0.2.0.zip

  • 这将创建以下文件夹“C:\Oracle\instantclient_12_1”。
    使用“Windows 命令提示符”(WIN+R CMD)转到上面的文件夹并执行 SQLPLUS:
  • sqlplus [user]/[pass]@[host]:[port]/[service]

  • 您必须能够连接。

    最后,将“C:\Oracle\instantclient_12_1”文件夹添加到 PATH 环境变量 中,将其放在最左边的位置。

    关闭您的 WAMP 服务器

    是的关闭它,因为环境变量仅在启动时读取。
    所以重启服务可能会失败,导致你得到错误的结果。

    重新启动后,您的 PHPINFO 将显示已加载的 OCI8 和 PDO_OCI。

    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/

    相关文章:

    php - session 变量设置但返回空白

    sql-server - Oracle 和 SQL Server 中的 nvarchar 和 varchar

    css - SASS错误与编译

    php - 在 wamp 中卸载 pear

    php - 使用 PHP 的 iPad 的最大 session 生命周期?

    php - MySQL 和 PHP 中的全文搜索不起作用

    php - 有没有办法 var_dump 当前事件的无缓冲查询

    sql - 不清楚 LAST_VALUE - 前面

    oracle - 错误 (7,1) : PLS-00103: Encountered the symbol "BEGIN"

    php - $_POST 在 php5.6 中为空