【问题标题】:Call to undefined function mysqli_connect on PHP for windows在 PHP for windows 上调用未定义函数 mysqli_connect
【发布时间】:2018-03-08 16:47:28
【问题描述】:

我有以下代码:

<?php
    DEFINE ('DB_USER', 'test');
    DEFINE ('DB_PASSWORD', 'test');
    DEFINE ('DB_HOST', 'localhost');
    DEFINE ('DB_NAME', 'site');

    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
    OR die('Could not connect to MYSQL ' . mysqli_connect_error());
?>

如果我运行它,我会收到以下错误消息:

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

我正在使用PHP for Windows downloaded

根据我的阅读,您应该取消注释 php.ini 文件中的部分。我的 PHP 文件夹中没有 php.ini,只有 php.ini-development 和 php.ini-production。

我尝试将其中一个文件重命名为 php.ini 并取消注释 extension=mysqli,但问题仍然存在。

我该如何解决这个问题?

【问题讨论】:

  • 您可能需要将其中一个重命名为 php.ini
  • 将其中一个文件复制为 php.ini 并进行必要的更改。
  • 在命令行,运行命令php -m(列出模块)并查看输出中是否有mysqli。 (输出按字母顺序列出)

标签: php mysql


【解决方案1】:

我遇到了同样的问题,大多数 stackoverflow 答案并没有真正清楚地解决您在设置 php.ini 时需要采取的其他步骤。如果您只是取消注释extension=mysqli php 仍然不知道您的任何扩展实际位于何处,因此它将无法加载它们。找到您的 php.ini 中类似于以下内容的部分:

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
; extension_dir = "ext"

然后取消注释底部的“extension_dir”值并用你的“ext”目录的绝对路径填写该值,即:

extension_dir = "<absolute-path-to-ext-folder>"

完成这两个步骤后(取消注释extension=mysqli,然后在extension_dir 中添加绝对路径),mysqli 加载正确

【讨论】:

  • 非常感谢。这节省了我的时间。
【解决方案2】:

正如设置所说,您必须重命名您拥有的 2 个中的一个,如果您不这样做,PHP 将使用默认值。

因此,将其中一个更改为 php.ini 并取消注释该行 - 据我回忆,这应该不是真正需要的。

【讨论】:

  • extension=mysqli 这是我唯一需要取消注释的吗?
  • 我想是的。 TBH 我不记得了,我已经很久没有这样做了:)
【解决方案3】:

对于 Windows,您可以在 C:\xampp\php\php.ini-Folder (Windows) 或 etc-Folder(xampp-Folder 内)中找到该文件。

Linux下,大​​部分发行版都将lampp放在/opt/lampp下,所以可以在/opt/lampp/etc/php.ini下找到文件。

如果找不到。然后你应该将其中一个重命名为 php.ini 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 2017-01-25
    • 2019-09-24
    相关资源
    最近更新 更多