繁体   English   中英

php 抛出异常“调用未定义的 function oci_connect()”

[英]php throws exception "Call to undefined function oci_connect()"

这是我的配置:Window Server 2016 build 14393

来自 phpinfo:

PHP 版本 8.1.5 架构 X64 服务器 API CGI/FastCGI 加载的配置文件:D:\php\php.ini(预期) PHP API:20210902 8832247898518109 扩展名:202

来自 php.ini extension=oci8_12c; 与 Oracle 数据库 12c 即时客户端一起使用

笔记:
这个 php.ini 文件适用于我的笔记本电脑和另一台 windows 16 服务器(均运行 Apache)。 在此服务器上,我们在 IIS 上运行 php

phpinfo 列表中缺少许多扩展部分,包括 oci8 和 odbc。

如果我执行 php --ri 我会收到一屏警告,例如:

PHP Warning: PHP Startup: Unable to load dynamic library 'curl' (试过: d:\php\ext\curl (找不到指定的模块), d:\php\ext\php_curl.dll (找不到指定的模块)未找到))在第 0 行未知

但在我测试的每种情况下,指定文件夹中确实存在“丢失”dll。

从 d:\app\oracle\product\12.2.0\client_1\bin\tnsping.exe 执行 tnsping:

64 位 Windows 的 TNS Ping 实用程序:版本 12.2.0.1.0 - 2022 年 4 月 28 日 16:51:58 生产

路径的第一部分:

PATH=C:\Windows\system32\inetsrv;
D:\app\oracle\product\12.2.0\client_1\bin;
C:\Windows\system32;

我没有确定我的扩展未加载的根本原因。 但是,我能够让它们加载。 这是我所做的:

  1. 从 IIS fast-cgi 部分删除了 php-cgi 条目

  2. 从 IIS http-mapping 部分删除了 php-cgi 条目

  3. 删除了 d:\php 文件夹

  4. 从 IIS 管理器,添加 php 7.4(64 位)[平台管理器中可用的最新版本] 使用平台管理器

  5. 使用 IIS/PHP 管理器启用 OCI8_12c——此时,我的应用程序可以正常工作

  6. 将 php 8.15 解压缩到 d:\php

  7. 使用 IIS/PHP 管理器注册新版本,指向 d:\php\php-cgi.ee

  8. 使用 IIS/PHP 管理器启用 OCI8_19

  9. 重新启动 IIS - 现在我的应用程序在 IIS 下工作正常,php 8.15

暂无
暂无

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

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