只能在运行测试时进行调试



使用laravel/homes-travelt-box、VS Code和PHP Debug扩展,只有在通过phpunit运行测试时,我才能设置断点和逐步执行代码。

如果我通过浏览器访问相同的资源,我的断点永远不会被击中。

基于我可以在测试运行时进行调试的事实,我假设xdebug工作正常并配置正确。

我的.env文件:

APP_NAME=lms
APP_ENV=local
APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
APP_DEBUG=true
APP_URL=https://lms.test

我的.env.testing文件:

APP_NAME=lms
APP_ENV=testing
APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
APP_DEBUG=true
APP_URL=https://lms.test

PHP调试配置:

"configurations": [
{
"name": "Listen for XDebug on Homestead",
"type": "php",
"request": "launch",
"pathMappings": {
"/home/vagrant/code/MyProject": "C:\Users\lemon\source\vagrant\MyProject"
},
"port": 9000
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]

app.php

'env' => env('APP_ENV', 'production'),
'debug' => env('APP_DEBUG', false),
netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10
10.0.2.2

/etc/php/7.4/cli/conf.d/20-xdebug.ini

zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_autostart=1
xdebug.remote_host=10.0.2.2
xdebug.remote_connect_back = 1
xdebug.remote_port = 9000
xdebug.max_nesting_level = 512

我已经启用了xdebug日志记录。当我在测试期间运行调试器时,会创建日志并显示预期的条目。如果我随后删除日志文件,并从浏览器向与测试相同的控制器进行GET,则不会创建xdebug日志。

也许一些新鲜的眼光可以发现这个问题。谢谢

在命令行中,xdebug.remote_connect_back=1设置无效。在web环境中,它指示Xdebug从HTTP标头建立到IP地址的IDE连接。但是,如果存在NAT网络,就像Docker通常的情况一样,Xdebug无法连接到HTTP标头的IP地址,因此无法进行调试连接。

当您删除xdebug.remote_connect_back=1设置时,Xdebug只使用xdebug.remote_host设置,您已经将其正确设置为10.0.2.2

使用Docker时,您几乎永远无法使用xdebug.remote_connect_back

在绝望中,我从20-xdebug.ini中删除了这些行(并重新启动了php服务(,它成功了。

xdebug.remote_connect_back = 1
xdebug.remote_port = 9000
xdebug.max_nesting_level = 512

不知道为什么,但我希望这能帮助其他人。

相关内容

  • 没有找到相关文章

最新更新