【问题标题】:Fatal error: Uncaught Error: Call to undefined function oci_connect()致命错误:未捕获错误:调用未定义函数 oci_connect()
【发布时间】:2018-06-11 13:31:10
【问题描述】:

我在 PHP 中遇到oci_connect() 的问题。在我安装了Oracle InstantClient(32 Bit) 并在apache/bin/xampp/php 文件夹中复制了所需的*.dll 之后,我无法连接Oracle 数据库。

我明白了:

致命错误:未捕获错误:调用未定义函数 oci_connect() 在 C:\xampp\htdocs\OracleTest\connect.php:9 堆栈跟踪:#0 {main} 在第 9 行的 C:\xampp\htdocs\OracleTest\connect.php 中抛出。

还有我无法加载动态库的问题:

PHP 警告:PHP 启动:无法加载动态库 'C:\xampp\php\ext\php_oci8_11g.dll' - 指定的模块不能 被发现。在第 0 行的未知中

警告:PHP 启动:无法加载动态库 'C:\xampp\php\ext\php_oci8_11g.dll' - 指定的模块不能 被发现。在第 0 行的未知中

我的代码是这样的:

$oc_conn = oci_connect('127.0.0.1/XE','****', '****');
    if($oc_conn)
    {
        echo "Success!!!";
    }
    else
    {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

我在这个问题上苦苦挣扎了 3 多周。我真的需要帮助,提前谢谢你。

【问题讨论】:

  • 我在 Apache bin 文件夹中有“oci.dll”。和 php.ini 中的 'extension=php_oci8_12c.dll'
  • 我在 apache/bin 文件夹中也有这些 oci.dll 并删除了分号 ind php.ini

标签: php oracle oracle-call-interface


【解决方案1】:

“调用未定义函数 oci_connect()”似乎是由根本原因错误导致的次要错误。正如错误消息所说,根本原因错误似乎是 PHP 找不到名为 C:\xampp\php\ext\php_oci8_11g.dll 的文件。 PHP 将从您的 php.ini 中的 extension=php_oci8_12c.dll 语句中获取此文件名。看来您的 php.ini 已将C:\xampp\php\ext\ 定义为扩展代码应位于的位置。

修复:确保 .dll 位于 C:\xampp\php\ext\,而不仅仅是 apache/bin。另外,请确保 .dll 的名称是 php_oci8_11g.dll,而不是 oci.dll

成功加载动态库/扩展将(通常)为您的 PHP 代码提供新的函数和类。加载完php_oci8_11g.dll 后,您可能会发现oci_connect() 错误也已修复。

【讨论】:

  • .dll 文件在两个文件夹中,我也有需要的 11g.dll 文件,但它仍然无法正常工作。
  • “11g.dll”是您拥有的文件的确切名称吗?还是你只是简短?
  • 不是 php_oci8_11g.dll,但我称之为 11g.dll
  • 那么,你是说这个(确切命名的)文件存在:“C:\xampp\php\ext\php_oci8_11g.dll”?如果是,那么您不应该收到错误消息说它找不到。
  • 另外,我刚刚想到。您是否正在运行 64 位 PHP 并使用 32 位 oci .dll,反之亦然?这也可能是个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 2017-01-27
  • 2016-04-07
  • 2017-08-19
相关资源
最近更新 更多