我们在 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 之间切换的可能性。
HUX布斯