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 -mmysql条目 - 在你的网站根目录创建
phpinfo.php文件,内容如下:
访问<?php phpinfo(); ?>http://localhost:8001/phpinfo.php,搜索mysql,确认扩展已加载
额外建议
虽然安装mysql扩展可以解决当前问题,但这个扩展在PHP 7及以后版本已被完全移除。如果你的项目有维护空间,建议逐步将代码迁移到mysqli或PDO扩展,这两个扩展更安全、功能更完善,也具备更好的兼容性。
内容的提问来源于stack exchange,提问作者Stephen
相关产品推荐
相关产品推荐

