MySQLi 未找到 dockerized php

新手上路,请多包涵

我正在尝试对我的网站进行码头化。我已经启动并运行了 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 的输出: 配置mysqlnd

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

原文由 Tom 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 593
2 个回答

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

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

无需触摸 php.ini

原文由 Robert 发布,翻译遵循 CC BY-SA 3.0 许可协议

我有类似的问题

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>

原文由 Abhishek D K 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏