近段时间手头有个PHP的源码,对它挺感兴趣所以就用Docker运行了PHP8的容器,代码运行起来之后发现数据库无法访问,根据报错信息看出是MySQL的扩展没启用,百度溜达了好久也没找到一个帖子讲明白如何启用扩展,自己摸索了半天终于搞明白,在这里分享给一下
安装扩展的教程在文档中有记录,根据文档描述镜像中已经内置了许多常用的扩展,只是没有安装,且文档中写出了操作扩展的命令
我下载的镜像是PHP8版本:docker pull php:8.0-fpm
,容器起名为php8
进入到容器中,执行php -m
命令,可以看到打印出mysqlnd,查看该扩展所在位置
[root@localhost webs]# docker exec -it php8 /bin/bash root@8e288e13b95c:/var/www/html# php -m root@8e288e13b95c:/var/www/html# find / -name mysqlnd
执行install命令安装mysqlnd,然后再次查看该扩展所在位置,会发现多了一个目录
root@8e288e13b95c:/var/www/html# docker-php-ext-install mysqlnd root@8e288e13b95c:/var/www/html# find / -name mysqlnd
移动到多出来的目录中,查看与MySQL相关的文件,会看到mysqli,这个才是真正要安装的扩展,执行安装
root@8e288e13b95c:/var/www/html# cd /usr/src/php/ext root@8e288e13b95c:/usr/src/php/ext# ls -l | grep mysql root@8e288e13b95c:/usr/src/php/ext# docker-php-ext-install ./mysqli
至此安装完成,退出容器重启后重启MySQL扩展就可以使用了