PhpStorm无法调试VirtualBox中Debian服务器Xdebug问题求助
排查步骤
修正xdebug.client_host配置
你当前配置的xdebug.client_host=127.0.0.1是虚拟机的本地回环地址,Xdebug运行在虚拟机的PHP进程中,发调试请求时只会投递到虚拟机自身端口,无法到达宿主机运行的PhpStorm。- 若VirtualBox网络为默认NAT模式,将配置改为
xdebug.client_host=10.0.2.2 - 若为桥接模式,填写宿主机的局域网IP(通常为192.168.x.x段)
修改后重启php-fpm或apache/nginx服务生效。
- 若VirtualBox网络为默认NAT模式,将配置改为
验证网络连通性
在Debian虚拟机中安装netcat工具,执行命令nc -zv <宿主机IP> 9003,返回succeeded!说明网络链路正常。如果连接失败,先关闭宿主机防火墙,或为9003端口添加入站规则,同时确认宿主机没有其他程序占用9003端口。确认Web端Xdebug配置生效
php -v只能验证CLI模式的PHP配置,Web请求使用的php-fpm/mod_php可能加载不同的配置文件。你可以在项目根目录新建临时文件phpinfo.php,写入代码<?php phpinfo();,通过浏览器访问https://admin.localwww.pl/phpinfo.php,查看Xdebug板块的配置参数是否和你修改的xdebug.ini一致,确认xdebug.mode、xdebug.client_host、xdebug.client_port等值正确。检查PhpStorm路径映射配置
打开PhpStorm的远程调试配置,确认路径映射规则正确:宿主机本地的项目根目录,必须和虚拟机中Symfony项目的实际存放路径一一对应。比如宿主机路径/Users/xxx/project/admin对应虚拟机路径/var/www/admin,路径映射错误会导致PhpStorm收到调试请求后无法匹配本地文件,断点不会触发。关闭缓存干扰
开发环境下在php.ini中设置opcache.enable=0临时关闭OPcache,避免代码缓存导致断点不生效。同时清空Symfony开发环境缓存:执行php bin/console cache:clear --env=dev,使用dev环境访问测试。
内容的提问来源于stack exchange,提问作者PawelC

