如何在 PHP 7.0 和 XAMPP 上使用 OCI8?

How to use OCI8 on PHP 7.0 with XAMPP?

我安装了oracle instant client 12,但是无法连接php与OCI8。我正在使用 XAMPP 32 位和 PHP 7.0.15。在我的 phpinfo() 中不显示 OCI 部分。拜托,我被这个问题困了几天。 :/ 谢谢大家!

好吧,问题是 XAMPP PECL(网站)也有错误的(或过时的)OCI8 DLL。所以这个 link here 有 PHP.

的正确 DLL

您必须检查您的 php 是否使用 x86 架构,因为您使用的是 XAMPP-32 位。

如果你通过 cmd 进入你的 xampp/php 目录,在我的例子中它是 "C:\xampp\php",然后通过简单的命令“php”启动 php 它可能会显示在 etc 文件夹中未找到哪些 dll 或者其中哪些不兼容 Win 32.

如果是这样,由于 win 32 兼容性问题或找不到您确定存在的 dll,您应该检查路径变量中是否有任何源未找到您正在使用的 php ,这里的重点是使用XAMPP中默认给出的那个。 如果您需要更新的 OCI8 dll,您可以在 https://pecl.php.net/package/oci8 上下载它,但请记住检查线程安全兼容性,您也可以在 php 信息页面上找到它。在我的例子中,使用 XAMPP.

提供的就足够了

之后,您必须启用扩展程序:

 extension=oci8_12c

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

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

在此之后,您必须下载 Oracle Instant Client。由于您使用的是 x86 架构,因此您需要找到 OCI 的 32 位版本,但检查哪一个与您取消注释的扩展兼容也很重要。就我而言,oci8_12cinstantclient-basic-nt-12.2. 最后一步是将它解压到一个文件夹,如"C:\instantclient_12_2",并将其添加到系统的路径变量中。 重新加载 apache 并检查 OCI8 是否正确显示。

如果您解决了问题,您将能够在打开 phpinfo() 页面时看到 OCI8 页面: