在 (php-fpm) docker 容器中找不到 mysqli

mysqli not found in (php-fpm) docker container

我 运行 php:7-fpm 在我的 nginx 网络服务器使用的 docker 容器中。除了我试图在我的 PHP 代码中实例化 mysqli 连接时,一切都运行良好。我收到以下错误:

"NOTICE: PHP message: PHP Fatal error:  Uncaught Error: Class 'Listener\mysqli' not found in index.php:104

这是我用于构建图像的 Dockerfile,我在其中明确安装了 mysqli 扩展:

FROM php:7-fpm

RUN docker-php-ext-install mysqli

根据下面的 phpinfo() 输出,它似乎已安装。我是否需要以某种方式配置或启用它?

您的问题不是缺少 mysqli 扩展。

如果您正在做这样的事情:

namespace Listener;

class Foo
{
    public function bar() {
        $conn = new mysqli(...);
    }
}

然后 PHP 会将 new mysqli() 解释为 new \Listener\mysqli(),因为您当前位于 \Listener 命名空间中。要解决此问题,您可以明确地将 mysqli() 锚定到根命名空间:

$conn = new \mysqli(...);