phpstorm,打开远程项目,xdebug调试
phpstrom 打开远程项目,拉到本地
本地修改后,crtl+s保存,修改上传到远程
配置 xdebug
注意,
打开远程项目 和 phpstorm 提供的 remote development 还不同
remote development 不需要把代码拉到本地了,是真正的远程开发
------------------------------------------------------
1、宝塔中 php 安装 xdebug 扩展
2、在 php 配置文件中添加以下内容
xdebug.mode=debug
xdebug.start_with_request=yes
;client_host 是指 phpstorm 所在电脑的 ip,
;远程服务器上的xdebug会与phpstorm所在的本地电脑建立连接,
;但本地电脑并不在公网,但容易连不上,解决办法见下一步
xdebug.client_host=localhost
xdebug.client_port=9003
xdebug.idekey=PHPSTORM
xdebug.discover_client_host=false
xdebug.log=/tmp/xdebug.log
xdebug.log_level=7
3、从远程服务器无法与本地9003端口建立连接问题
通过SSH反向隧道(ssh -R)配合Xdebug配置 xdebug.client_host=localhost是最可靠的解决方案
# 在本地电脑执行(将远程9003端口映射到本地)
ssh -R 9003:localhost:9003 root@ecs-ip
xdebug.client_host=localhost # 因为隧道已建立
以上会单独打开一个命令行,不太方便
# 建立持久化隧道(推荐使用autossh,需要在本地电脑安装)
autossh -M 0 -f -N -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" \
-R 9003:localhost:9003 root@ecs-ip
-f:后台运行
-N:不执行远程命令
-R:反向端口转发(远程9003→本地9003)
SSH反向隧道本质上已经是一个安全的 "代理",
故而 phpstorm 中 DBGP proxy 不再需要配置
4、在 PHPStorm 中进行 Xdebug 远程调试时,是否可以不配置「远程 PHP 解释器」(Remote PHP Interpreter)?
4.1 可以不配置远程 PHP 解释器的情况
适用场景:
仅需调试(Debug)功能
您只需要通过 Xdebug 在 PHPStorm 中打断点调试远程代码,不依赖 PHPStorm 直接执行远程 PHP 脚本(如运行单元测试、命令行脚本等)。
代码修改后手动同步到远程服务器
您通过其他方式(如手动 rsync、SFTP 自动上传)同步代码到远程服务器,而不是依赖 PHPStorm 的部署功能。
只需配置以下两项:
Servers(路径映射):
Settings > PHP > Servers
添加远程服务器,设置正确的 Host 和 Port(如 80 或 443)
www.tkbearings.com 80 Xdebug
必须 配置 Path Mappings(本地路径 ↔ 远程路径),否则断点无效
本地:/Users/you/project
远程:/var/www/html
Debug 监听:端口默认为 9003(与 Xdebug 配置一致)。
点击工具栏的 Start Listening
Xdebug 配置示例(远程服务器):
[xdebug]
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.client_host=localhost # 通过 SSH 隧道转发
xdebug.client_port=9003
xdebug.idekey=PHPSTORM
4.2 必须配置远程 PHP 解释器的情况
适用场景:
需要通过 PHPStorm 直接执行远程 PHP 脚本
例如:在 PHPStorm 中运行 php artisan test(Laravel)或 PHPUnit 测试。
依赖 PHPStorm 的代码分析功能
如:实时检查远程 PHP 版本兼容性、调用远程 Composer 包等。
添加远程解释器:
Settings > PHP > CLI Interpreter → 点击 ... → 选择 From Docker, Vagrant, VM, WSL, Remote...
选择 SSH Credentials,输入 ECS 的连接信息。
验证路径映射:
确保 PHPStorm 能正确访问远程服务器的 PHP 可执行文件(如 /usr/bin/php)。