MySQLi没有找到dockerized php

Tom*_*Tom 7 php mysqli mysqlnd docker

我正在尝试将我的网站停靠.我已经启动并运行了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
Run Code Online (Sandbox Code Playgroud)

我在第8行的连接线是:

$db = new mysqli("$host", "$user", "$pass", "$db", "$port");
Run Code Online (Sandbox Code Playgroud)

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

phpinfo的输出: 配置 mysqlnd

我该如何运行?或者我现在应该使用不同的驱动程序?

Rob*_*ert 14

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

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

没有必要触摸php.ini.

  • 一些如何它不起作用。这是在我的`Dockerfile``FROM php:7.2-apache RUN docker-php-ext-install mysqli`它也没有给出任何错误 (4认同)
  • @Volatil3需要运行 docker-compose up --build。 (2认同)

rey*_*son 10

对我有用:

php 容器内:

docker-php-ext-install mysqli

apachectl restart
Run Code Online (Sandbox Code Playgroud)
  • docker 图像:mysql、php:7.2.30-apache

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

  • 官方 php-apache docker 不包含 mysqli,如果您确实需要 mysqli,因为您不会更改代码,这就是解决方案 (3认同)

Abh*_*D K 6

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

$ docker exec -it <phpcontainerid> bash  
Run Code Online (Sandbox Code Playgroud)

在 docker 容器 bash 终端内

# docker-php-ext-enable mysqli
Run Code Online (Sandbox Code Playgroud)

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

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

然后我提交了这个更改所以相同的图像

$ docker commit -p <phpcontainerid> <new or same image name>
Run Code Online (Sandbox Code Playgroud)