在 (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(...);
我 运行 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(...);