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

Docker部署PHP5.5出现Call to undefined function mysql_connect()错误求助

解决Docker部署PHP5.5时mysql_connect()未定义的问题

这个问题的核心是:你安装的是mysqli扩展,但你的代码调用的是旧的mysql_connect()函数——这两个属于完全不同的PHP扩展。PHP 5.5中mysql扩展虽然已被标记为废弃,但仍可安装,只是Docker官方的php:5.5-apache镜像默认不包含它,而且docker-php-ext-install工具没有直接提供mysql扩展的一键安装选项,需要手动编译安装。

下面是具体的修复步骤:

1. 修改你的Dockerfile

将你的Dockerfile替换为以下内容,确保基础镜像和docker-compose保持一致,同时安装mysql扩展:

FROM php:5.5-apache

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

# 编译并安装mysql扩展
RUN docker-php-ext-configure mysql --with-mysql=/usr \
    && docker-php-ext-install mysql

# 如果你同时需要mysqli扩展,保留这一步(可选)
RUN docker-php-ext-install mysqli

代码解释:

  • libmysqlclient-dev:编译mysql扩展必须的系统依赖库,缺少它会导致编译失败
  • docker-php-ext-configure mysql --with-mysql=/usr:配置扩展的编译参数,指定系统中mysql库的路径
  • docker-php-ext-install mysql:编译并安装mysql扩展到PHP环境中

2. 重新构建并启动容器

执行以下命令重新构建镜像并启动服务:

docker-compose down
docker-compose build --no-cache
docker-compose up -d

3. 验证扩展是否安装成功

可以通过两种方式验证:

  • 进入PHP容器执行命令查看已安装的扩展:
    docker exec -it [你的php容器名称] php -m
    
    查看输出中是否包含mysql条目
  • 在你的网站根目录创建phpinfo.php文件,内容如下:
    <?php phpinfo(); ?>
    
    访问http://localhost:8001/phpinfo.php,搜索mysql,确认扩展已加载

额外建议

虽然安装mysql扩展可以解决当前问题,但这个扩展在PHP 7及以后版本已被完全移除。如果你的项目有维护空间,建议逐步将代码迁移到mysqli或PDO扩展,这两个扩展更安全、功能更完善,也具备更好的兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:43:30