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

lit*_*leK 5 php docker docker-compose fpm

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

"NOTICE: PHP message: PHP Fatal error:  Uncaught Error: Class 'Listener\mysqli' not found in index.php:104
Run Code Online (Sandbox Code Playgroud)

这是我用于构建映像的 Dockerfile,我在其中显式安装了 mysqli 扩展:

FROM php:7-fpm

RUN docker-php-ext-install mysqli
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

Ale*_*sky 4

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

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

namespace Listener;

class Foo
{
    public function bar() {
        $conn = new mysqli(...);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

$conn = new \mysqli(...);
Run Code Online (Sandbox Code Playgroud)