Docker环境下PHP调用mysqli_connect()报未定义错误如何解决?
问题核心原因&解决方案
1. 未重新构建镜像导致Dockerfile修改未生效
你修改Dockerfile添加mysqli安装命令后,直接执行docker-compose up会复用之前构建的旧镜像,扩展安装步骤从未实际执行。执行以下命令重建镜像并启动服务即可:
docker-compose down && docker-compose up -d --build
2. 缺少扩展安装前置依赖
官方PHP基础镜像默认没有预装mysqli扩展的依赖库,需要先安装系统级依赖包再执行扩展安装,修改后的Dockerfile如下:
FROM php:7.4-apache RUN apt-get update && apt-get install -y --no-install-recommends \ libonig-dev \ libzip-dev \ && rm -rf /var/lib/apt/lists/* \ && docker-php-ext-install mysqli \ && docker-php-ext-enable mysqli
修改完成后重复第一步的重建镜像命令即可。
验证方法
在public_html目录下新建test.php文件,写入以下内容:
<?php var_dump(function_exists('mysqli_connect')); ?>
访问http://localhost:8080/test.php,输出bool(true)则表示扩展已正常加载。
注意:后续连接数据库时,主机地址需填写docker-compose中mysql服务的服务名
db,不要填127.0.0.1或localhost,否则会无法连通mysql容器。
内容的提问来源于stack exchange,提问作者Alan P.
相关产品推荐
相关产品推荐

