MySQLi 未找到 dockerized php

2022-08-30 14:29:45

我正在尝试将我的网站孤立起来。我已经启动并运行了Nginx和PHP,它的工作发现,除了我无法连接到数据库。加载页面时,我收到错误:

Fatal error: Uncaught Error: Class 'MySQLi' not found in /private/conn.php:8 Stack trace: #0 /public_html/index.php(2): require() #1 {main} thrown in /private/conn.php on line 8

我在第 8 行的连接线路是:

$db = new mysqli("$host", "$user", "$pass", "$db", "$port");

现在,这曾经在我的旧设置上工作得很好,但是自从移动到新设置并安装php7.1.5以来,我无法运行它。现在,我还没有使用mysqlnd,所以这可能是我的误解,但mysqlnd包括mysqli驱动程序。

phpinfo 的输出:config mysqlnd

如何运行此功能?或者我现在应该使用其他驱动程序吗?


答案 1

您需要在 Dockerfile 中启用 php 扩展:

FROM php:7
RUN docker-php-ext-install mysqli

无需触摸 。php.ini


答案 2

我在php:7-apache映像上遇到了类似的问题
,默认情况下不会安装
mysqli,您可以在容器内验证这一点

$ docker exec -it <phpcontainerid> bash  

在 docker 容器 bash 终端内部

# docker-php-ext-enable mysqli

如果未安装mysqli,您将从上述命令的输出中了解

# docker-php-ext-install mysqli

然后我提交了此更改,因此相同的图像

$ docker commit -p <phpcontainerid> <new or same image name>

推荐