You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Docker容器部署MySQL与PHP时遇mysqli类未找到错误求助

解决Docker部署中mysqli类不存在的问题

问题根源

你的docker-compose.yml里,php-apache服务直接使用了官方的php:8.0-apache镜像,而非你通过Dockerfile构建的、已安装mysqli扩展的自定义镜像,导致代码运行时找不到mysqli类。

修复步骤

1. 调整docker-compose配置

需要让php-apache服务使用你构建的带mysqli扩展的镜像,有两种实现方式:

方式一:在compose中直接关联Dockerfile构建

修改后的docker-compose.yml:

version: '3.6'
services:
  php-apache-environment:
    container_name: php-apache
    # 替换原image配置,指定Dockerfile所在目录(当前目录用.)
    build: .
    volumes:
      - ./php/src:/var/www/html/
    ports:
      - 8000:80
  db:
    container_name: db
    image: mysql
    restart: always
    environment:
        MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
        MYSQL_DATABASE: MY_DATABASE
        MYSQL_USER: MYSQL_USER
        MYSQL_PASSWORD: MYSQL_PASSWORD
    ports:
        - "9906:3306"

方式二:先手动构建自定义镜像

先执行构建命令生成带mysqli的镜像:

docker build -t php-8.0-apache-mysqli .

再修改docker-compose.yml里的image为自定义镜像名:

version: '3.6'
services:
  php-apache-environment:
    container_name: php-apache
    image: php-8.0-apache-mysqli
    volumes:
      - ./php/src:/var/www/html/
    ports:
      - 8000:80
  # db服务配置保持不变

2. 重新启动容器

执行命令更新容器:

# 停止并清理原有容器
docker-compose down
# 启动并构建镜像(方式一需加--build,方式二直接up即可)
docker-compose up --build

验证扩展状态

进入php-apache容器,检查mysqli是否已安装:

docker exec -it php-apache php -m

输出的扩展列表中应该能看到mysqli。

内容的提问来源于stack exchange,提问作者Cheviwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:06:11