MySQLi 未找到 dockerized php

MySQLi not found dockerized php

我正在尝试对我的网站进行 docker 化。我有 Nginx 和 PHP up 和 运行 并且它正在工作 find 除了我无法连接到数据库。加载页面时出现错误:

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 的输出:

我怎样才能得到这个 运行?或者我现在应该使用不同的驱动程序吗?

您的 php.ini 中似乎没有启用 MysqlI 扩展。 如果启用,您应该会在 phpinfo.

中看到 mysqli 部分

可在此处找到有关启用扩展的更多信息:Fatal error: Class 'MySQLi' not found

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

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

不需要触摸php.ini

我遇到了与
类似的问题 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>

works for me:

在 php 容器内:

docker-php-ext-install mysqli

apachectl restart
  • docker 图片:mysql、php:7.2.30-apache

https://github.com/docker-library/php/issues/391

确认您的 MySQL 版本应该与 docker

的 PHP 版本兼容

详情:-

首先,确保在php信息页面中你应该有安装mysqli的信息,如果没有那么......

否则,请安装它,如果您认为您已在 docker 中安装它但无法正常工作

然后确认您的 MySQL 版本应该与 docker 的 PHP 版本兼容 喜欢

首先我将这对用于 docker

  • php:7.4-apache & mysql:5.7(但它不工作并显示错误 Class 'mysqli' 未找到)

之后我安装了

  • php:7.2-apache & mysql:5.7对我来说很好用