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

如何在docker-compose搭建的PHP环境中正常使用mysqli_connect

解决方案

你遇到的问题由两个常见配置错误共同导致:一是官方php:7.4-fpm默认未内置mysqli扩展,临时在运行容器内安装的扩展会在容器重启后失效;二是你当前docker-compose里的php.ini挂载配置错误,导致即使安装了扩展也无法被php加载。


步骤1:编写PHP自定义构建文件

在你的docker-compose.yml同级目录新建Dockerfile-php文件,内容如下:

FROM php:7.4-fpm
# 安装mysqli扩展所需依赖
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
        libonig-dev \
        libzip-dev \
    && docker-php-ext-install mysqli pdo_mysql \
    && docker-php-ext-enable mysqli pdo_mysql

步骤2:修正docker-compose.yml的php服务配置

修改原docker-compose.yml里的php服务段,替换原来的image: php:7.4-fpm为构建配置,同时修正错误的php.ini挂载:

php:
    build:
      context: .
      dockerfile: Dockerfile-php
    links:
      - docker-mysql
    volumes:
      - ./workspace:/var/www/html/
      # 注意:这里要把本地ini配置目录挂载到php的扩展配置目录,不要挂载到php.ini主文件路径
      # 如果你不需要自定义php配置,可以直接删除这条挂载
      - ./php:/usr/local/etc/php/conf.d/:ro

原配置中./php:/usr/local/etc/php/php.ini是错误写法:如果本地./php是目录,挂载到文件路径会导致php无法读取正常配置,扩展自然无法加载。如果你的本地./php是单个ini文件,只需要在文件内添加extension=mysqli.so即可。

步骤3:重建容器生效

执行以下命令重建服务,必须加--build参数触发php镜像重新构建:

docker-compose down
docker-compose up -d --build

验证生效方式

进入php容器执行命令验证扩展已加载:

docker-compose exec php php -m | grep mysqli

有输出mysqli即代表扩展安装激活成功,再运行你的PHP代码即可正常调用mysqli_connect()。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 00:15:03