致命错误:调用未定义函数 oci_connect()

Posted

技术标签:

【中文标题】致命错误:调用未定义函数 oci_connect()【英文标题】:Fatal error: Call to undefined function oci_connect() 【发布时间】:2011-12-26 12:43:06 【问题描述】:

我没有注释下一行(在我的 php.ini 中):

extension=php_oracle.dll 
extension=php_oci8.dll

我下载了这个文件instantclient-basiclite-nt-11.2.0.2.0.zip 并解压缩并将其放在驱动器 D...

我使用的是 Windows XP

我这样设置环境变量:

LD_LIBRARY_PATH     C:\instantclient_11_2:$LD_LIBRARY_PATH 
ORACLE_HOME     C:\instantclient_11_2 

但是当我执行oci_connect() 函数时,我看到了这个错误:

致命错误:在 ... 中调用未定义函数 oci_connect()

我在 erroeLog 文件中发现了这个警告:

[29-Dec-2011 00:36:39] PHP 警告:PHP 启动:无法加载动态库 'c:\php\ext\php_oci8.dll' - 找不到指定的模块。 在第 0 行的未知中

[29-Dec-2011 00:36:39] PHP 警告:PHP 启动:无法加载动态库 'c:\php\ext\php_oracle.dll' - 找不到指定的模块。

【问题讨论】:

CLI 版本或 Apache 输出什么消息?日志文件或系统日志的内容是什么? 这应该有助于解决上述错误! Link 【参考方案1】:

检查事项:

您不需要设置LD_LIBRARY_PATHORACLE_HOME。但是,您需要将D:\instantclient_11_2 添加到PATH 环境变量并重新启动计算机以应用更改。

在配置 PHP 之前,请检查您的 Oracle 客户端库是否实际工作(例如,尝试与 SQL Developer 连接)。

注释掉extension=php_oracle.dll。它属于旧的和已弃用的 Oracle 扩展。

再次检查php_oci8.dll 文件是否真的位于c:\php\ext\php_oci8.dll

【讨论】:

@afsane - 那么很明显:它不能独立工作,它不能在 PHP 下工作。 我遇到了同样的问题,发现在 ini 文件中注释了 php_oci8.dll 并在旁边看到另一条这样的注释:“与 Oracle 10gR2 Instant Client 一起使用”。它提到了你要检查的第一点东西?使用 Instantclient 或取消注释 ini 文件中的 php_oci8.dll 有什么区别? @Andrea_86 - 使用 PHP 和使用 Apache 之间存在相同的区别:不同的东西,两者都需要。【参考方案2】:

php_oci8.dll 文件放入php/ext 目录后是否重新启动了apache?

【讨论】:

【参考方案3】:

只需将这一行添加到指向扩展位置的php.in文件中,应该知道它们的位置,但通常在php文件夹中。

extension_dir = C:\xampp\php\ext ;this 是给我使用 xampp 的,要明智。

它对我有用。问题在于访问扩展,与 oracle 库无关。

【讨论】:

以上是关于致命错误:调用未定义函数 oci_connect()的主要内容,如果未能解决你的问题,请参考以下文章

调用未定义函数 oci_connect()

调用未定义函数 oci_connect()

致命错误:调用未定义函数 mb_detect_encoding()

致命错误:未捕获错误:调用未定义函数 is_product()

致命错误:未捕获的错误:调用 C:\xampp\htdocs\ 中未定义的函数 mysql_connect()

致命错误:在 php 中调用未定义函数 fetch_assoc()