接下来想审计几个开源的cms,工欲善其事必先利其器,这里我用的是phpstrom+xdebug+phpstudy的组合。安装phpstrom和phpstudy这个不多说。
phpstudy
注意这里不要使用apache作为中间件,这样会导致调试过程中会话丢失(大概1分钟不到)。
后来发现其实是phpstudy的apache默认配置问题,修改一下就行
1 | mod_fcgid.c> |
先启动nginx和mysql
再新建网站
这个默认配置就行,注意使用cms推荐的php版本。
打开网站能正常访问就行。
同时在 管理->php扩展-> 勾选xdebug
打开对应版本的php.ini文件
在[xdebug]
项添加idekey和打开远程调试
phpstorm
将网站根目录作为项目打开
打开设置选择php版本
下拉php列表
配置服务器和phpstudy相同就行
下拉调试
选择DBGp代理
这里要注意的是这三个值要和php.ini中的对应
1 | xdebug.idekey=PHPSTORM |
在phpstorm 右上角添加配置
选择php web页面
点击 验证测试xdebug没问题
浏览器安装Xdebug helper
在扩展选项中填写IDE key
调试
先下好断点
然后点击监听
Shift+F10 运行
接着在浏览器将Xdebug helper选择debug模式
再去触发相应的代码,就能在断点处停下了
接下来可以愉快的调试了!
对于运行在5.4及其以上的cms,调试时可以不使用phpstudy(需要xdebug插件),在右上角添加配置时选择php内置服务器即可
这里是自己起了php监听,可以看到访问的请求,两种运行方法各有优劣。
后面又发现个问题
调试时会遇到debug会话未暂停的警告
调试的网页也会报一个404错误,会影响后续的调试。
各种切换版本,修改配置,搜索引擎等操作,还是找不到解决办法。(救救孩子
所以打算弃了phpstudy,改用wsl2作为调试环境(我太难了)
后面发现,别偷懒直接设置在脚本第一行调试即可
WSL2管理多版本php
作为一个调试环境,如果只有一个php版本无疑是失败的!
1 | sudo add-apt-repository ppa:ondrej/php //添加仓库源 |
更多内容参考这篇文章
如果是kali等debian系可以参考一下命令
1 | sudo apt -y install lsb-release apt-transport-https ca-certificates |
修改php.ini文件
添加 [xdebug]
,
这里要注意
1.remote_host要填win10的wsl的ip,wsl不能直接通过localhost访问win10的端口
2.在win10防火墙的出站规则中把公用域的两个配置改成允许连接
太草了,不是这个xdebug.log一辈子翻不了案
PHPSTORM添加运行环境
这里的配置和上面一样,我就贴个图把
运行 监听 浏览器开启xdebug
心累- -!
还有个问题就是每次重启后win10的wsl网域会变化,所以xdebug的配置也要跟着变化
这里可以考虑把wsl设置为静态IP,但我的解决方案是写个脚本修改xdebug的配置
1 |
|
另外一个解决办法是在php.ini
添加 xdebug.remote_connect_back = 1
//如果开启,将忽略 xdebug.remote_host 的参数。它会根据访问的ip直接回连