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

重述

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

这太棒了。现在我们想切换到php 64bit,但是对于一些老项目我们还是需要32bit的php和oracle客户端。

所以我们进行如下操作:
1.卸载oracle客户端
2.安装oracle客户端12.1.0 64位(安装类型:管理)C:\Oracle\product\12.1.0\client_x64
3.重启服务器
4.配置网络管理器
5.安装oracle客户端12.1.0 32位(安装类型:管理)在C:\Oracle\product\12.1.0\client_x86
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

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

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

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

重述

问题解决了。

一切正常,但 oracle 设置忘记了该clientx64文件夹的正确窗口

clientx86组“经过身份验证的用户”(德语:Authentifizierter Benutzer)具有完全访问权限,而clientx64没有该组。

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

所以一切正常!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档