docker中的php7代码调试
前言
- 最近想好好看看PHP反序列化POP链的构造,加上之前遇到的laravel的题,想把挖的坑埋了,于是开始漫长的环境搭建之旅。。。
- 由于laravel是在PHP7环境下的框架,我在物理机上使用的phpstudy怎么都无法成功调试,最近又迷上docker的一次搭建万年使用并且随时还原的方便(使用爽,构建火葬场);使用docker可以做到php版本灵活切换,在这里把遇到的坑和一些产物记录下来。
搭建过程
- 本文的搭建方法主要参考自http://ramkulkarni.com/blog/setting-up-and-debugging-php7-in-docker/
坑
- 国内环境下原Dockerfile不能成功下载程序
- 原文中的VScode配置过时,需要更改为新的模式
- PHPstorm在配好环境后仍然不能正常debug,只能停在第一行的断点处,并且继续执行下一行时失去连接。抓包后可以看到双方都有通讯,从而不是服务器端的问题。
- 吹爆VScode!
踩完坑后的搭建过程
Docker服务器端
然后,build Dockerfile:
1 |
docker build -t php7_xdebug . |
记下返回的id。
- 然后运行container:
1
docker run -d -p 10086:80 --name php7_xdebug --restart=always 刚刚返回的id
VScode端
- 在插件中直接搜索安装 PHP Debug
-
在配置中设置,其中的
pathMappings
后面设置VScode端的项目路径,此处设置了本地到远程的文件目录映射:12345678910
{ "name": "Listen for XDebug", "type": "php", "request": "launch", "stopOnEntry": true, "pathMappings": { "/var/www/html":"C:\\Users\\...\\php7_docker" }, "port": 9000 }
-
至此,就可以打好断点愉快地debug了:
更改php7版本
- 首先修改Dockerfile中的php7版本
- 构建并运行container后,输入:
1 |
find / -name xdebug.so |
- 将返回结果替换到php.ini中的
zend_extension=
之后 - 重新启动container中的服务器
- 继续后续操作即可(换版本时主要是需要把php.ini中的路径重新设置好)
参考资料
- http://ramkulkarni.com/blog/setting-up-and-debugging-php7-in-docker/
- https://jonathansblog.co.uk/remote-debugging-php-in-visual-studio-code-with-xdebug
- source:hachp1.github.io
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论