我们在 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_x643.重启服务器4.配置网络管理器5.安装oracle客户端12.1.0 32位(安装类型:管理)在C:\Oracle\product\12.1.0\client_x864. 重启服务器5. 配置网络管理器6. 下载带有 64 位扩展的 php 7.3.4 64 位现在我们有两个 php 文件夹:C:\php7_3_4_x86C:\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.exe2. 交换环境变量 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 之间切换的可能性。
1 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
问题解决了。
一切正常,但 oracle 设置忘记了该clientx64
文件夹的正确窗口。
在clientx86
组“经过身份验证的用户”(德语:Authentifizierter Benutzer)具有完全访问权限,而clientx64
没有该组。
添加组并授予它clientx64
对其工作文件夹的完全访问权限后。没有必要切换 PATH 变量中的条目。PHP 尝试加载第一个元素,失败后加载 PATH 变量中的第二个元素。
所以一切正常!
- 1 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消