php_oci8_11g.dll 不是有效的 Win32 应用程序

标签 php oracle windows-7 php-5.6

这个话题已经被问过好几次了,但每个解决方案都没有在我的机器上工作。

我正在尝试将 Windows 7 与 10G oracle dabatase 连接,但未加载 oci 扩展。这里有一些事实:
C:\php>php -m

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_oci8_11g.dll' - %1 is not a valid Win32 application.


C:\php>php -v
PHP 5.6.19 (cli) (built: Mar  2 2016 20:09:42)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
  • 64x 架构
  • TS VC11
  • C:\>tnsping localdb
    TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-AUG-2
    016 22:37:50
    

    故障排除
  • 我正在使用 oci8 2.0.11 .把它们丢在 ext/折叠。其余的扩展程序加载得很好。
  • PATH 变量包含 ORACLE_HOME 和 php 路径
  • 只需查找所需的 oracle dll 文件,它们就在那里:
    C:\>where oci*
    C:\oracle\product\10.2.0\db_2\BIN\oci.dll
    C:\oracle\product\10.2.0\db_2\BIN\ocijdbc10.dll
    C:\oracle\product\10.2.0\db_2\BIN\ociw32.dll
    
  • 我这边不需要Oracle Client,因为数据库安装在同一台机器上,它安装了所有需要的库

  • 我还缺少什么?先感谢您

    最佳答案

    几个月后,我找到了解决方案。考虑以下基础设施:

  • Windows Server 2012 R2 标准版 x64
  • Apache/2.4.18 (Win64) VC11
  • PHP 5.6.19 x86 VC11 TS

  • 下载 Oracle Instant Client 时要特别注意:
  • 无论您的服务器是 x64 还是 x86 架构,都必须下载 32 位
  • 如您所见,PHP 是在 VC11 中编译的,因此您 必须使用 VC11 源下载 OIC,这可以确认解压缩下载的文件并检查文件夹 vc11 是否存在。

  • 这两个细节都非常重要。一旦我满足这两个要求,错误就消失了,我现在可以通过 PHP 成功连接到 Oracle

    关于php_oci8_11g.dll 不是有效的 Win32 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38709005/

    相关文章:

    php - 将txt文件/数据导入到我的mysql数据库

    c++ - 将 Oracle DB 表的 ROWID 存储为字符数组

    java - Oracle 如何在从 plsql 调用 java 时导入缺少的 java 类

    visual-studio-2008 - 如何将 .sln 文件添加到 Visual Studio (Windows 7) 的跳转列表?

    php - 获取间隔之间的温差

    php - XAMPP 使用 PHP/MySQL 运行速度非常慢

    将 varchar 复制到文本数据类型

    windows - 在本地用户之间交换数据的正确 Windows 文件夹是什么?

    delphi - 需要在windows中解析HMONITOR --> deviceName(或deviceName --> HMONITOR)

    php mysql 连接 2 个没有共同值的表