前言
不管是测试服务器,还是生产服务器,程序出现了问题,虽然可以根据日志来锁定问题,但从效率上来讲,总是那么不尽如人意。
虽然PHP可以在代码中通过var_dump()和dump()来调试输出,但这效率,可真是一言难尽啊。
由于Coder开发都是在本地,一番测试各个功能并没有什么问题,可一旦部署到测试服务器上,再次进行测试时,却出现了诡异的问题,也许这些问题,是你见都没见过的问题。
面对这种困惑,我们能想到的就是,能不能在本地电脑通过工具,远程调试测试服务器上的PHP代码呢?
答案当然是可以的。
VS Code安装 Remote
如果你的电脑还没有安装这款开源免费且开箱即用的IDE,那么你可以先去下载安装它。
VS Code官方下载地址:https://code.visualstudio.com/
作为一位Coder,我想你应该不至于会去国内的什么下载站进行下载李鬼版的VS Code吧,除了官方的,其他的都是盗版,如果你无知到下载了国内付费的VS Code(原先武汉就有一家公司,无耻到把VS Code开源代码套个壳,拿出来卖,什么公司忘了),那你算是给IT界丢人了。
安装 Remote-SSH
在打开的VS Code,在左侧的功能栏里,点击那个田字格的图标,搜索框中输入remote后,点开如下图所示的,点击install,安装这个插件,它就是用来远程连接的。

连接远程服务
ctrl+shift+p打开命令框输入remote ssh,或者点击左下角绿色按钮,这里没能截取全图。

首次是需要建一个配置文件。


# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host <给连接的服务器命名>
HostName <需要连接的服务器IP>
User <连接服务器的用户>
ForwardAgent yes
windows7出现的错误(非win7系统可以跳过)
选择远程服务器的系统类型,出现下图的错误,那是因为在windows7系统中没有安装SSH,当然现如今,几乎很少开发者会在windows7进行开发了。

64 位操作系统下载这个:点击下载(备用下载) 32 位操作系统下载这个:点击下载(备用下载)

将OpenSSH安装路径添加到环境变量 Path中。

使用 RSA 进行免密登录
生成公钥/密钥对
直接在VS Code中打开terminal,或者cmd打开一个黑窗口,输入以下命令。
ssh-keygen -t rsa

将公钥添加到服务器上
把公钥文件id_rsa.pub拷贝到需要登录的服务器上(存储路径可以随意,但是之后加入到另一个文件尾部的时候注意路径地址。)

将公钥id_rsa.pub填充到authorized_keys尾部。
cat /home/id_rsa.pub >> ~/.ssh/authorized_keys
Remote-SSH配置中添加本地秘钥文件路径
我们打开之前的Remote-SSH配置文件,在文件末尾加入以下内容。
IdentityFile <你本地的SSH秘钥文件路径> #这个非必要,通过它可以避免每次连接都要输入密码的麻烦。
最终的Remote-SSH配置文件将会是这般。
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host <给连接的服务器命名>
HostName <需要连接的服务器IP>
User <连接服务器的用户>
ForwardAgent yes
IdentityFile <你本地的SSH秘钥文件路径> #这个非必要,通过它可以避免每次连接都要输入密码的麻烦。

VS Code 安装 PHP Debug
PHP代码调式总是缺不了XDebug这个扩展。
首先,我们需要先在VS Code IDE中安装PHP Debug这个插件。

注意:是连上了服务器以后,在服务器端的vscode上安装调试的插件,安装的时候文字是install in xxx(服务器在配置中的名字)。
为服务器上的 PHP 安装XDebug扩展
xdebug是用来调试php的扩展库,但是你要调试php就一定要装他,注意xdebug要和php版本兼容,记得改wget的文件名,安装完在自己的php.ini中配置一下,我们用vscode其实是本地调试。
xdebug版本兼容参考https://xdebug.org/docs/compat#versions
如果不知道php.ini在哪可以输这个命令。
php -i |grep php.ini
由于XDebug对应的Linux系统只提供了源码,需要你自己在服务器进行编译,然而编译XDebug源码不在本文主题的范畴,遂不再这里做过多赘述。
打开php.ini文件,在它末尾加入以下内容。
[xdebug]
zend_extension=/www/server/php/74/lib/php/extensions/no/debug-non-zts-20190902/xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=localhost
xdebug.client_port=13579
xdebug.remote_log=/tmp/xdebug.log

VS Code配置 XDebug
虽然我们在VS Code上安装了PHP Debug这款插件,也在服务器上安装了用来调式PHP的XDebug扩展。
要想XDebug能够正常工作,我们需要配置监听XDebug端口的配置文件。


你以为到这里就大功告成了吗?不,还差那么一丢丢。
那就是需要配置服务器上的PHP解释器。

把图中红色部分修改你服务器上对应的PHP解释器文件全路径即可。


