PHP Docker镜像如何开启拓展

背景

很久之前,有一个ctf比赛,大家都在俱乐部里使劲。当时我做到了一道php的题目,里面需要用到php插件中的压缩,但是当时我不知道如何开启插件,当时非常苦恼,想着一定要解决一下这个问题,不然以后再遇到这个问题就麻烦了。

今天在做sql盲注的时候,想现在本地实践一番,写出个脚本再开题目。结果本地上来就给我一个mysqli找不到。我便花了很长时间去寻找开启插件的方法。在php.ini里试了一下,但是都没有成果,最终我开了一眼dockerhub的php镜像说明,豁然开朗,原来镜像开始拓展如此简单。

解决办法

官方原话。

docker-php-ext

官方提供了几个命令,docker-php-ext-configuredocker-php-ext-installdocker-php-ext-enalbe来轻松地安装拓展。

但是官方给地例子都是需要在Dockerfile里先运行然后生成镜像的,这貌似有点麻烦。

然后我在github上发现了这位老哥的留言,它说这些命令其实完全可以在容器内部使用。

牛逼的老哥

其实我应该想到的,毕竟Dockerfile中的RUN实际上就是执行内部的命令然后生成一个新的镜像。

这样安装mysqli拓展就显得无比简单了,只需在容器内部执行

1
2
3
docker-php-ext-install mysqli
docker-php-ext-enable mysqli #实际测试这句话可以不写,会自动应用
apachectl restart

运行结果

phpinfo中出现mysqlil

成功利用mysqli连接

战术总结

这次算是解决了一个重大历史遗留问题。

以后php的时候就可以更加游刃有余了。


PHP Docker镜像如何开启拓展
https://wuuconix.link/2021/08/26/php-ext/
作者
wuuconix
发布于
2021年8月26日
许可协议