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

如何在Docker中为PHP 5.5添加MySQL/Mysqli扩展?

PHP 5.5 Docker容器中mysql_connect()函数未定义问题

错误信息

Fatal error: Call to undefined function mysql_connect() in /var/www/html/wp-includes/wp-db.php on line 1568

当前配置文件

docker-compose.yml

version: '3.8'
services:
  php-apache-environment:
    container_name: php-55-apache
    build:
        context: .
        dockerfile: ./Dockerfile
    image: php:5.5-apache
    volumes:
      - /Websites/wordpress/:/var/www/html/
    ports:
      - 8000:80
      - 3306:3306

Dockerfile

FROM php:5.5-apache

RUN mkdir -p /usr/src/php/ext/mysql
RUN docker-php-ext-install mysql mysqli && docker-php-ext-enable mysql mysqli

RUN printf 'log_errors = On\nerror_log = /dev/stderr\n' >> /usr/local/etc/php/conf.d/php.ini

RUN a2enmod rewrite
RUN service apache2 restart

排查情况

构建输出显示扩展已安装,但进入容器后执行find / -name "*mysql*",仅能找到mysqlnd相关文件,找不到mysql/mysqli扩展的实际模块文件,说明扩展未成功编译安装。

环境

Docker 3.1,macOS


解决方案

修正后的Dockerfile

FROM php:5.5-apache

# 安装编译mysql扩展所需的系统依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
    libmysqlclient-dev \
    && rm -rf /var/lib/apt/lists/*

# 移除多余的mkdir命令,docker-php-ext-install会自动处理扩展目录
RUN docker-php-ext-install mysql mysqli

RUN printf 'log_errors = On\nerror_log = /dev/stderr\n' >> /usr/local/etc/php/conf.d/php.ini

RUN a2enmod rewrite
# 移除service apache2 restart,容器启动时apache会自动运行

关键说明

  1. 补全依赖:PHP的mysql/mysqli扩展编译需要依赖libmysqlclient-dev,原Dockerfile未安装该依赖,导致扩展编译失败,即便构建日志显示"安装完成",实际也未生成有效模块。
  2. 移除冗余操作:mkdir -p /usr/src/php/ext/mysql属于多余操作,docker-php-ext-install脚本会自动从PHP源码中获取扩展编译文件,无需手动创建目录。
  3. 删除无效重启:Dockerfile中的service apache2 restart在构建阶段执行,对容器运行时的Apache服务无影响,原基础镜像php:5.5-apache的默认CMD已包含启动Apache的指令。

验证方式

容器启动后,进入容器执行php -m,查看输出中是否包含mysql和mysqli模块;也可在PHP脚本中通过extension_loaded('mysql')和extension_loaded('mysqli')验证扩展加载状态。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 18:30:26