利用docker搭建php调试环境(phpstorm+xdebug)

前言

最近审计php代码发现手动打印变量实在是太累了,不能快速的了解目标应用程序的运行逻辑。还是决定转战xdebug,下面是一些简单的记录…真香

docker环境获取

为什么用docker来搭建调试环境呢?一是本地搭建比较麻烦,二是没有docker便携,放在docker里,更加灵活。docker环境可以直接到dockerhub上去找一个,我用的下面这个

https://hub.docker.com/r/tommylau/xdebug

上面这个环境,集成了php+apache+xdebug,配置也是没啥大问题的,网上很多教程都说安装好xdebug还需要在php.ini里进行配置,但是这个环境的配置文件在/usr/local/etc/php/conf.d/ext-xdebug.ini,内容如下

zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=0
xdebug.remote_connect_back=1
xdebug.remote_port=9000

这个配置文件我们后面还需要稍微改一下

phpstorm远程调试环境配置

在调试之前,我们需要先把web应用部署到docker中去

docker run --name xdebug -v /path/to/web:/var/www/html -p 80:80 -d tommylau/xdebug

运行上述命令,可以把本地的web目录挂载到docker的web目录中。如果需要连接宿主机的数据库,那么只需要在数据库连接配置时指定数据库ip为宿主机的ip就行(当然,首先要保证你使用的用户支持远程连接)

如果要使root用户支持远程主机连接,可以执行以下命令:
grant all privileges on . to ‘root’@’%’ identified by ‘密码’ with grant option;
flush privileges;

如果要连接其他docker中的数据库,网上有教程,就不详述了。

接下来我们开始配置phpstorm吧

  • 在settings>build,Execution,Deployment>Deployment 点击+号新建一个deployment,由于我们这里使用的是docker挂载目录的方式,所以type选择选择 in place也没啥问题,web server url选择项目的在服务器上的路径(url)

利用docker搭建php调试环境(phpstorm+xdebug)_第1张图片

  • 然后选择Mappings选项,设置映射

利用docker搭建php调试环境(phpstorm+xdebug)_第2张图片

  • 在settings>Languages&Frameworks > php中设置php解释器

利用docker搭建php调试环境(phpstorm+xdebug)_第3张图片

  • 展开php这一栏,选中debug栏,设置一下监听端口,这处的端口可不是随便填的,需要和docker里xdebug配置的那个端口一致

利用docker搭建php调试环境(phpstorm+xdebug)_第4张图片

  • 展开debug栏,选中DBGp Proxy,IDE key比较关键,这就涉及到我们服务端xdebug的设置了,xdebug的设置修改为下面这样
zend_extension=xdebug.so
xdebug.idekey="PHPSTORM"
xdebug.remote_enable=1
xdebug.remote_autostart=0
xdebug.remote_connect_back=1
xdebug.remote_port=9000

也就是添加了一行xdebug.idekey="PHPSTORM",所以phpstorm中配置的ide key需要和服务器上的xdebug配置文件中的idekey一致,至于host和port就是服务器的host:port

利用docker搭建php调试环境(phpstorm+xdebug)_第5张图片

  • 然后再选中servers栏,点击+号创建一个server, host port就是web服务器地址,debugger选择Xdebug,然后这里需要勾选path mappings,并且正确设置目录映射,否则调试的时候,会出现cannot find a local file的错误,类似下面这样

利用docker搭建php调试环境(phpstorm+xdebug)_第6张图片

利用docker搭建php调试环境(phpstorm+xdebug)_第7张图片

  • 最后,需要编辑一下deubg 的配置
    利用docker搭建php调试环境(phpstorm+xdebug)_第8张图片
    创建一个php web page,然后server选择我们刚刚创建的xdebug, 设置一下需要调试项目的url
    利用docker搭建php调试环境(phpstorm+xdebug)_第9张图片

  • 设置的差不多了,我们在run > web server debug validation栏检查设置是否正确,记得选中remote web server, deployment server就是我们刚刚创建的deployment, 出现如下现象则表示设置正确

利用docker搭建php调试环境(phpstorm+xdebug)_第10张图片

现在就可以debug刚刚创建的 php web page了,点击右上角那个小虫子就行,这是可能出现如下问题
cannot find a local copy of the file .....,这时候点击click to set up path mappings

利用docker搭建php调试环境(phpstorm+xdebug)_第11张图片
会弹出一个框,然后选中那个复选框就行

利用docker搭建php调试环境(phpstorm+xdebug)_第12张图片

接下来就可以愉快的调试了

利用docker搭建php调试环境(phpstorm+xdebug)_第13张图片

参考

https://segmentfault.com/a/1190000011907425

你可能感兴趣的:(xdebug,phpstorm,php调试,php审计,代码审计)