【发布时间】:2021-10-27 19:22:15
【问题描述】:
我是 Docker 新手,正在尝试使用 PHP 和 MySQL(特别是 mysqli)创建映像。
当我启动我的应用程序并且 PHP 代码尝试从数据库中提取时,出现此错误:
Uncaught Error: Call to undefined function mysqli_connect()
这是我的 Dockerfile:
FROM php:7.4-apache
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
这是我的 docker-compose.yml 文件:
version: "3.6"
services:
php:
build:
context: .
dockerfile: Dockerfile
volumes:
- ./public_html:/var/www/html
ports:
- 8080:80
db:
image: mysql:5.7.34
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: user
volumes:
- ./init:/docker-entrypoint-initdb.d
adminer:
image: adminer
restart: always
ports:
- 8081:8080
当我查看phpinfo() 时,mysqlnd 有一个部分,但mysqli 没有一个部分。
Mysql 正常工作,就像adminer 工作一样——只是mysqli 不工作。
我错过了什么?谢谢。
【问题讨论】:
-
用你的 dockerfile,无法重现。
-
@atline 它对你有用吗?呃,我认为 docker 应该解决这些烦恼。我重新启动计算机,从 Docker UI 中删除了映像,然后重新创建了映像 (
docker build -t test-app .),然后创建了容器 (docker-compose up),但仍然没有运气。 -
这些命令对吗?我从 UI 中删除了图像,将 docker 文件更改为使用 PHP 8,然后按照上述说明再次创建了图像和容器。在我的应用程序中,当我运行
phpinfo()时,它仍然显示 PHP 版本 7.4...为什么不显示版本 8?有缓存之类的吗?
标签: php mysql docker mysqli docker-compose