繁体   English   中英

在同一服务器上使用带有64位oracle客户端的php 7.3.4 64bit和带有32位oracle客户端的php 7.3.4 32bit

[英]Using php 7.3.4 64bit with a 64bit oracle client and php 7.3.4 32bit with a 32bit oracle client on the same server

我们在Windows Server 2016 Standard上有一个IIS,它通过快速cgi使用php 7.3.4 32bit。
要在另一台服务器上建立与oracle 12cR1数据库的连接,我们使用php_oci8_12c.dll和oracle客户端12.1.0 32位。

这很棒。 现在我们要切换到64位php,但是对于某些旧项目,我们仍然需要32位php和oracle客户端。

因此,我们执行以下操作:
1.卸载oracle客户端
2.在C:\\Oracle\\product\\12.1.0\\client_x64安装oracle客户端12.1.0 64位(安装类型:管理)
3.重新启动服务器
4.配置网络管理器
5.在C:\\Oracle\\product\\12.1.0\\client_x86安装oracle客户端12.1.0 32位(安装类型:管理)
4.重新启动服务器
5.配置网络管理器
6.下载具有64位扩展名的PHP 7.3.4 64位

现在我们有两个php文件夹:
C:\\php7_3_4_x86
C:\\php7_3_4_x64

此时,IIS使用C:\\ php7_3_4_x86 \\ php-cgi.exe和32位oracle客户端,因为其最新安装的客户端和路径是PATH变量中所有路径中的第一个。

现在我们想将临时切换到64位。 因此,我们尝试执行以下步骤:
1.将IIS处理程序更改为C:\\ php7_3_4_x64 \\ php-cgi.exe
2.在环境变量PATH中交换oracle客户端路径。 现在它是: C:\\Oracle\\product\\12.1.0\\client_x64;C:\\Oracle\\product\\12.1.0\\client_x86;[...]
3.重新启动服务器

重新启动后,我们尝试在浏览器中打开一个php文件,但出现以下错误:
Call to undefined function oci_connect

如果我们将C:\\Oracle\\product\\12.1.0\\client_x64\\BIN的oci.dll直接放入C:\\php7_3_4_x64则会加载文件。 因此,我们认为它找不到64位客户端。

我们还尝试在C:\\ Windows \\ system32 / SYSWOW64中创建链接的方法,但这不起作用。 同样的错误。

我们该怎么办? 我们需要在32和64位php + oracle之间切换的可能性。

问题解决了。

一切都正确,但是oracle安装程序忘记了clientx64文件夹的正确窗口。

clientx86 ,组“已认证用户”(德语:Authentifizierter Benutzer)具有完全访问权限,而clientx64没有该组。

添加组并授予其对clientx64文件夹的完全访问权限后,它便可以工作。 无需切换PATH变量中的条目。 PHP尝试加载第一个元素,失败后将其加载到PATH变量中的第二个元素。

所以一切正常!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM