用vscode调试远程服务器的php

一开始用phpstorm+chrome的xdebug helper连接远程的腾讯云服务器进行xdebug调试,一直不成功,卡在:
phpstorm Waiting for incoming connection with ide key xxxxx
想了半天可能是腾讯云安全组没加规则,然后加上还是不行。
查了很多文章,弄了两三天,还是弄不好。(顺便说下好多文章是重复的,不知道连博客都要抄的意义)
最后换了vscode的remote ssh+php debug解决了。 谢天谢地
反正目标是调试成功,管他什么ide。其实有点反感phpstorm,太臃肿。vscode配置的时间没用多少,其他方案不行可以参考一下……

0.安装vscode

vscode也可以编其他语言。没有装的可以装一下。大部分人应该都装过,这里步骤略去

1.安装remote ssh插件

可以参考这篇教程,比我的详细
https://www.cnblogs.com/liyufeia/p/11405779.html
用vscode调试远程服务器的php_第1张图片

2.连接服务器

可以点击左下角的绿色按钮,或者ctrl+shift+p打开命令框输入remote ssh应该也有。
第一次用要新建一个配置文件,我这里不好复现配置过程,参考上面的教程吧。
用vscode调试远程服务器的php_第2张图片
这个插件有个不好的地方就是每次都要输一遍密码,建议改用密钥,具体过程上面那个教程里也有。就是在云服务器上保存公钥,然后在自己电脑的C盘某个.ssh文件夹里添加私钥。然后连接会自动确认,就不用输密码了。应该vscode上也不用加什么操作。

3.在服务器端vscode安装php debug插件

用vscode调试远程服务器的php_第3张图片
注意是连上了服务器以后,在服务器端的vscode上安装调试的插件,安装的时候文字是install in xxx(服务器在配置中的名字)。

4.安装xdebug

xdebug是用来调试php的软件,原本和vscode没什么关系,但是你要调试php就一定要装他,安装过程网上一大把,我这里也推荐几篇,注意xdebug要和php版本兼容,记得改wget的文件名,安装完在自己的php.ini中配置一下,这两篇里有,不过是远程调试的,我们用vscode其实是本地调试,下面会讲配置
xdebug版本兼容参考https://xdebug.org/docs/compat#versions
xdebug安装教程1https://blog.csdn.net/song634/article/details/80170838
xdebug安装教程2https://www.cnblogs.com/wicub/p/6226996.html

如果不知道php.ini在哪可以输这个命令

php -i |grep php.ini
原理是用grep从php -i中输出有"php.ini"的一段

用vscode调试远程服务器的php_第4张图片
我的配置是这个,看[xdebug]里的。zend_extension扩展路径,是xdebug安装完以后输出的路径,可以翻一下控制台输出复制过来,按教程来一般是一样的。然后增加remote_port,改了下端口,不弄也行。有很多是之前配置phpstorm时弄的,已经注释掉了(前面有分号、颜色是蓝色)
用vscode调试远程服务器的php_第5张图片
重启httpd(或者其他http服务器),只是单纯php的话不用管

service httpd restart
也可以验证一下xdebug开启没有
php -i |grep xdebug
如果看到一大堆xdebug配置就是表明xdebug已经加入到php中了

5.vscode配置

具体参考vscode上php debug的说明文档,我这里简单说一下
随便打开一个php文件点三角形按钮调试,一开始应该是没有调试php的配置的,他会弹出命令框,然后新建一个launch.json,里面会自动创建php的两条配置
用vscode调试远程服务器的php_第6张图片
我的配置是这样的
上面一个“Listen for XDebug”是用在php被动启动的情况,比如html里form提交到php,因为直接调试没有http request,所以要监听,记得打断点。第二个就是直接调试当前的php。注意port端口号,和php.ini的port要一样,如果之前没设,那这里一般是9000。
用vscode调试远程服务器的php_第7张图片
考虑到不小心删了什么的,我这里就文本也放一段

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 13795
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 13795
        }
    ]
}

配置完了以后再按按钮开始调试,就可以停在断点了

总结

利用vscode的插件把远程连接调试php转化为本地调试php,通讯从php xdebug通讯变成vscode通讯,不能说流程简单了一点,但是也是可行的。

vscode在其他语言也用的到,remote ssh也可以用在其他和服务器有关的开发中,所以其实只是添加了一个php debug插件。

配置环境实在是太难了,各种奇怪问题都找不到办法……

你可能感兴趣的:(php,调试,vscode,phpstorm,xdebug)