【问题标题】:PHPUnit, Fatal error: Class 'mysqli' not foundPHPUnit,致命错误:找不到类 'mysqli'
【发布时间】:2013-01-04 15:14:58
【问题描述】:

我有一个与here 描述的问题类似的问题:

一切都如我所料;无论我是从命令行界面还是从 Web 浏览器运行,我的代码都会访问数据库并打印输出。结果相同。如果我在 Eclipse 中使用 PHPUnit 运行它,我会收到一个错误:

Multiple annotations found at this line:
    - Fatal error: Class 'mysqli' not found
    - Occurrence of 'connection'

哪些指向以下行:

此代码打印出“是”。

$connection = new \mysqli(HOST, USER, PASS, DATABASE);

if (extension_loaded('mysqli')) {
    echo "Yes";
}
else {
    echo "No";
}

还有一点需要指出的是,我在上面代码所在的类中使用了自己的命名空间。我的单元测试在全局命名空间中。

我已按照上述 URL 中的步骤进行操作,但可惜无济于事。 :(

在命令提示符下运行不会出错:

php -r "new mysqli();"

请有人帮我理解这里的问题吗?

【问题讨论】:

  • 为什么mysqli前面有反斜杠?
  • 因为没有反斜杠,它认为mysqli是我命名空间中的一个函数。

标签: php mysqli phpunit


【解决方案1】:

我不确定您是否使用正确的路径(DLL 或共享对象 (.so) 文件)配置了您的 php.ini 文件。如果您使用的是 Unix/Linux,请尝试在命令行上运行,

$> php -i | grep mysqli

看看它是否说正在安装,或者创建一个 PHP 脚本

<?php phpinfo(); ?>

运行该脚本并检查它是否正确加载。如果您确信它确实已安装,请尝试通过检查 php.ini 的“扩展”部分来检查您的 php.ini 文件是否正确加载。

在运行 PHPUnit 时还要检查它是否在命令行中,因为在 web 模式下运行时,php.ini 与 php.ini 的路径可能不同。

【讨论】:

  • 1) 我认为mysqli已经安装正确了。它存在于 phpinfo 中;我可以从网络界面访问数据库;我可以从命令行提示符访问数据库。 2) 我不确定我有两个不同的 php.ini 文件。 whereis php .ini 只返回一个 php.ini 文件。
  • 如果安装了扩展,那么当您在不加载扩展的 eclipse 中运行它时,几乎可以肯定它使用了不同的 PHP.ini。 phpinfo() 的输出将告诉您加载了哪些扩展以及正在使用的 php.ini 文件。
猜你喜欢
  • 2022-01-02
  • 2013-09-27
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
  • 2012-04-28
相关资源
最近更新 更多