如何在 xampp 5.6.3 中启用 oci?

Posted

技术标签:

【中文标题】如何在 xampp 5.6.3 中启用 oci?【英文标题】:How to enable oci in xampp 5.6.3? 【发布时间】:2015-05-14 14:28:19 【问题描述】:

我在通过 XAMPP 启动 Apache 服务器时遇到了一些问题。我已经安装了 XAMPP 版本 5.6.3。

当我从 xampp 控制面板启动 Apache 服务器时,会显示如下所示的错误消息:

单击“确定”按钮后,将显示另一个对话框,如下所示:

问题是我想使用 OCI 而不是 mysql。所以我在 php.ini 文件中注释掉了 mysql 扩展并取消了 OCI 扩展的注释。

php_oci8_12c.dll 文件是 xampp 中 php 的 extensions (ext) 文件夹中唯一可用的文件。因此,我在 php.ini 中包含了该行,如上图所示。

从那以后我收到了这个错误。

我也安装了即时客户端 12.1,但没有运气。我还尝试从 Instantclient_12_1 复制 OCI.dll 并将其粘贴到 c:/xampp/php 和 c:/xampp/apache/bin 中。错误仍然存​​在。

需要帮助..

更新:我在环境变量的 PATH 中删除了其他 oracle 路径,只保留了 Instantclient 路径。现在我收到此错误..

【问题讨论】:

【参考方案1】:

嗯,我已经安装了 XAMPP 1.8.2、PHP 5.4 和 Apache 2.0,并且我使用 php_oci8_11g.dll 并且工作正常。

您正在尝试使用 php_oci8_12g.dll,我建议您阅读此链接 http://www.oracle.com/technetwork/articles/dsl/technote-php-instant-12c-2088811.html,其中包含运行 oci12g 的电子规范。

【讨论】:

嗨@Pablo,我已阅读您提供的链接中有关oci8 和instantclient 12c 的文档并进行了一些更改,但现在我遇到了另一个错误。我在我的问题中提到了它作为 UPDATE 您的窗口是 64 位还是 32 位?因为我猜文档不一致。它说您必须安装 Apache x64、InstantClient x64、ocidll x64 但 php 5.5 x32。尝试在 Windows 64 位和所有软件(php、apache、xampp、instantclient、ocidll)上运行它也是 64 位【参考方案2】:

我解决了这个问题。问题是我试图在 32 位 PHP 中使用 64 位 DLL(php_oci8_12g.dll)。我下载了一个 32 位的 InstantClient,它现在可以工作了! :-)

instantclient-basic-nt-12.1.0.2.0.zip

【讨论】:

我面临同样的问题,你能按照你的建议帮助我吗【参考方案3】:

连续几天遇到OCI8和XAMPP相关的问题,问题显示为:

致命错误:调用未定义函数 oci_connect()

我能够使用 XAMPP 默认附带的 php 来纠正它。我也在使用 Windows 10 64 位,但使用了 xampp-win32-7.3.2-0-VC15 (php 7.3.2)。总而言之,我能够通过使用 32 位版本(操作系统除外)进行所有操作来获得正确的配置。完整的故事以及我是如何做到的:

如果你通过 cmd 进入你的 xampp/php 目录,在我的例子中是“C:\xampp\php”,然后通过简单的命令“php”启动 php,它可能会显示 dll 是什么在 etc 文件夹中找不到或其中哪些不兼容 Win 32。如果遇到这个问题,打开 phpinfo() 页面时将看不到 OCI8 页面:

如果是这种情况,win 32 兼容性问题或找不到您确定存在的 dll,您应该卸载 XAMPP 并使用 x32 版本重新安装它。 phpinfo 页面将显示 x86 架构。请记住在路径变量中删除任何找不到您正在使用的 php 的源,这里的重点是使用 XAMPP 中默认给出的源。如果您出于任何原因需要使用另一个 php 安装,请记住使用 x86 架构。 如果您需要更新的 OCI8 dll,您可以在 https://pecl.php.net/package/oci8 上下载它,但请记住检查线程安全兼容性,您也可以在 phpinfo 页面上找到它。就我而言,使用 XAMPP 提供的就足够了。

在此之后,您必须启用扩展:

 extension=oci8_12c

在 php.ini 配置文件中。我只启用这个就足够了,尽管有些人建议也启用 extension=pdo_oci。我的建议是仅在您使用此处显示的路径安装失败时才尝试此操作。在我的情况下,检查您是否设置在正确的扩展路径中也很好:

extension_dir="C:\xampp\php\ext"

在此之后,您必须下载 Oracle Instant Client。由于您使用的是 x86 架构(您必须使用这个),因此您需要找到 32 位版本的 OIC,但检查哪个与您未注释的扩展兼容也很重要。在我的例子中,oci8_12c 是 Instantclient-basic-nt-12.2。 最后一步是将其解压缩到一个文件夹,例如“C:\instantclient_12_2”,并将其添加到系统的路径变量中。 重新加载apache并检查OCI8是否正确显示。

【讨论】:

【参考方案4】:

我在卡住 2-3 天后解决了这个问题。

在执行步骤之前需要记住的一些事情。 1-我使用的是 win 8.1 64 位。 2-使用 Xampp 5.6.31 32 位。 3- 使用 instaclient 12.2.0.1 64 位(因为我的 win 8.1 是 64 位)。

现在步骤如下-

第 1 步 - 下载 xampp 5.6.31 32 位并安装。

第 2 步 - 下载并安装 oracle 11g R2

第 3 步 - 下载并安装 OTN(oracle instaclient 12.2.0.1)

提取任何驱动器中的所有文件,我在 C:\oracle\instaclient12.2.0.1 中提取 将 (C:\oracle\instaclient12.2.0.1 ) 添加到系统的路径变量中。并在名为 TNS_ADMIN 的系统变量下添加新变量,并将相同的路径 (C:\oracle\instaclient12.2.0.1 ) 放入其值中。 是时候在此处设置 PHP.INI 取消以下注释(见下图) PHP.ini setup 从 C:\oracle\instaclient12.2.0.1 oci.dll、oraociei12.dll 和 oraons.dll 复制 3 个文件到 xampp apache\bin 。通过这一步无法加载动态库的问题已经解决。 Unable to load dynamic library issue solution 现在在 xampp 上重新启动 Apache 并在浏览器上检查 info.php。 OCI8 模块会出现在那里 enable 。

享受!!!。

【讨论】:

以上是关于如何在 xampp 5.6.3 中启用 oci?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Windows 启用 UTF 8 支持 PCRE xampp?

如何在 PHP / XAMPP 中启用 cURL

如何在 PHP / XAMPP 中启用 cURL

如何在 Windows 7 的 XAMPP 上运行的 PHP 应用程序中启用 SSL?

如何在 XAMPP 上启用 mysqli?

如何在 Linux 上的 xampp 中的 php GD 库中启用 Webp 支持