【问题标题】:Unable to load dynamic library 'C:\xampp\php\ext\php_oci8.dll' - %1 is not a valid Win32 application无法加载动态库 'C:\xampp\php\ext\php_oci8.dll' - %1 不是有效的 Win32 应用程序
【发布时间】:2018-09-30 19:06:57
【问题描述】:

我在启动 xampp 服务器时收到此错误。

C:\xampp\php\ext\php_oci8.dll' - %1 不是有效的 Win32 应用程序。

我下载了php_oci8-2.0.8-5.6-ts-vc11-x86并将php_oci8.dll解压到C:\xampp\php\ext目录中。

另外,我下载了instantclient-basic-nt-12.1.0.2.0(32位版本)并将其添加到windows的PATH变量中。

C:\OracleBasicClient\instantclient-basic-nt-12.1.0.2.0\instantclient_12_1 添加到 PATH

不过,我收到了这个错误,不知道为什么会这样。

我的 Windows 是 64 位的。

PHP 信息 (xampp)

系统 Windows NT 6.1 (Windows 7 Professional) i586
编译器 MSVC11 (Visual C++ 2012)
架构 x86 线程安全启用

我可能做错了什么,我该如何解决?

【问题讨论】:

    标签: php oracle xampp


    【解决方案1】:

    您似乎下载了不同架构的 DLL 并在您的 php.ini 中指向它,而不是使用捆绑的 DLL 并简单地取消注释 php.ini 中的默认条目。

    我刚刚下载了同一个版本,XAMPP 3.2.2 x86,带有 PHP 7.1,它附带您需要的 DLL 文件,它安装到 C:\xampp\php\ext\php_oci8_12c.dll

    您似乎已正确完成其他所有操作。

    要解决此问题,请确保有效的php.ini(默认为C:\xampp\php\php.ini引用默认文件(删除您为php_oci8.dll 添加的错误条目),如下所示:

    extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
    

    重启Apache,问题应该解决了。

    【讨论】:

      【解决方案2】:

      您的错误显示内置类型不匹配。

      按照以下步骤解决:

      确保在http://www.oracle.com/technetwork/topics/winsoft-085727.html 下载并安装 oracle instantclient,但请注意:

      1. 记下您的 Oracle 数据库版本;对 Oracle 数据库 12c 使用 12.1.x 版,对于 11g 版本使用 11.1.x 版。
      2. 无论哪种情况,请确保您下载了 Oracle 即时客户端的 Basic Lite 版本。

      之后,将 Oracle 即时客户端的位置添加到环境变量下的系统变量路径中。同样确保您的 xampp 及其 ext 的 PHP 都可用并在那里设置(如果没有,请添加它们)。

      然后,继续添加一个新的系统变量,其中 TNS_ADMIN 作为变量名Oracle 即时客户端的位置 作为变量值.

      另外,使用与 相同的Oracle Instantclient 位置定义您的用户变量PATH

      在此阶段之后,重新启动计算机以完全传播新定义的环境变量。

      打开后,您可以打开 Windows 命令提示符 并运行 where oci* 以确保您已明确定义了环境变量;响应应如下所示:

      C:\Users\flex>where oci*
      
      C:\oraclexe\app\oracle\product\11.2.0\server\bin\oci.dll
      C:\oraclexe\app\oracle\product\11.2.0\server\bin\ocijdbc11.dll
      C:\oraclexe\app\oracle\product\11.2.0\server\bin\ocijdbc11.sym
      C:\oraclexe\app\oracle\product\11.2.0\server\bin\ociw32.dll
      C:\instantclient_11_2\oci.dll
      C:\instantclient_11_2\oci.sym
      C:\instantclient_11_2\ocijdbc11.dll
      C:\instantclient_11_2\ocijdbc11.sym
      C:\instantclient_11_2\ociw32.dll
      C:\instantclient_11_2\ociw32.sym
      

      如果没有,你一定错过了什么,需要重新审视这个过程,确保有效地完成它。

      您现在可以继续到您的 php.ini 文件(前提是环境变量定义明确)并通过取消注释来启用您的 oci 扩展(php_oci8.dll 和 php_oci8_11g.dll);您可以通过简单地删除上述扩展之前的半列 (;) 来实现。

      请记住保存您的 php.ini 文件,然后,如果 apache 尚未运行,请重新启动或启动它。

      要检查您的 PHP oci8 配置是否启用,您可以返回 Windows 命令提示符并运行:php --ri oci8;响应应类似于以下响应:

      C:\Users\flex>php --ri oci8
      
      OCI8 Support => enabled
      OCI8 DTrace Support => disabled
      OCI8 Version => 2.1.1
      Revision => $Id: 86f22a208f89dcd5b305e82929a7429683968b11 $
      Oracle Run-time Client Library Version => 11.2.0.4.0
      Oracle Compile-time Instant Client Version => 10.2
      
      Directive => Local Value => Master Value
      oci8.max_persistent => -1 => -1
      oci8.persistent_timeout => -1 => -1
      oci8.ping_interval => 60 => 60
      oci8.privileged_connect => Off => Off
      oci8.statement_cache_size => 20 => 20
      oci8.default_prefetch => 100 => 100
      oci8.old_oci_close_semantics => Off => Off
      oci8.events => Off => Off
      
      Statistics =>
      Active Persistent Connections => 0
      Active Connections => 0
      

      或者,您可以创建一个以<?php phpinfo(); ?> 为内容的 PHP 文件,然后在浏览器中打开它并搜索 oci8 匹配项;它也应该在那里显示启用。

      【讨论】:

      • 我已完成所有步骤,但仍收到警告且未连接 Oracle $ php --ri oci8 PHP Warning: PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_ oci8_12c.dll' - The specified module could not be found. in Unknown on line 0
      • @WaqasMehmood:查看您的C:\xampp\php\ext 目录并按名称检查文件php_oci8_12c.dll;你能找到它(文件)吗?我敢肯定它一定不见了。请问是这样吗?
      • 是的php_oci8_12c.dll 文件放在c:\xampp\php\ext 文件夹中。
      • @WaqasMehmood:您使用的是什么版本的 instantclient?视窗版? PHP版本?
      • oracle Instant Client:instantclient-basic-nt-12.2.0.1.0,php 7.1,windows 10,xampp 3.2.2
      猜你喜欢
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 2014-11-08
      • 2017-08-04
      • 2016-08-04
      • 2014-08-28
      • 2017-01-23
      相关资源
      最近更新 更多