使用宅基地从 PHPStorm 调试 laravel artisan
Posted
技术标签:
【中文标题】使用宅基地从 PHPStorm 调试 laravel artisan【英文标题】:debugging laravel artisan from PHPStorm with homestead 【发布时间】:2015-03-12 05:54:15 【问题描述】:我设置了 Laravel Homestead。然后我配置了 homestead xdebug.ini 和 phpStorm 以使调试工作。
这是我在宅基地里的 xdebug.ini
zend_extension=xdebug.so
xdebug.remote_autostart = on
xdebug.remote_enable = on
xdebug.remote_connect_back = on
xdebug.remote_port = 9000
xdebug.idekey = "vagrant"
要开始调试会话,我遵循的步骤是
-
在 PHPStorm --> 开始监听连接
在 PHPStorm 中设置断点
在我的浏览器中 --> 使用 XDebug Chrome Helper 或添加到我的 URL ?XDEBUG_SESSION_START=
加载页面
这非常有效。我的问题是,当我在 homestead 命令行中运行 php artisan
命令时,我无法让它达到我的断点。
我的尝试
XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=server_name" php -dxdebug.remote_host="127.0.0.1" artisan mycommand
php -d xdebug.profiler_enable=On artisan mycommand
我还尝试设置 xdebug.remote_autostart=On
然后设置 sudo service php5-fpm restart
但我的断点仍然没有在 PHPStorm 中被击中
【问题讨论】:
你最终成功了吗? 【参考方案1】:在最新版本的 Homestead 中,您可以使用 xphp artisan whatever
并且 phpstorm 会自动弹出一个窗口。
https://laravel.com/docs/8.x/homestead#debugging-cli-applications
【讨论】:
【参考方案2】:有两点很重要:
remote_connect_back
不能在 CLI 的情况下工作,因为 Xdebug 在控制台时无法检测到远程 IP
在 NAT 网络配置中使用 homestead / VirtualBox 时,您的开发机器(运行 PHPStorm)没有从 VM 内部看到的 IP 127.0.0.1
。相反,它通常具有像10.0.2.2
这样的IP。要找出正确的 IP,请查看您的 Apache 的 access.log
,
以下内容对我有用:
php -dxdebug.remote_autostart=on -dxdebug.remote_connect_back=off
-dxdebug.remote_host=10.0.2.2 artisan
-
edit 如果没有命中断点,则必须正确设置文件夹映射(因为 IDE 中的路径与 Web 服务器看到的不同:
在您的 VM 中执行 export PHP_IDE_CONFIG="serverName=yourservername"
,其中 yourservername
是您在屏幕截图中“名称”下配置的内容
使用 IDE 密钥和上面配置的服务器添加 PHP 远程调试配置
并将您的 IDE 密钥和 remote_host 添加到 VM 的 XDEBUG-CONFIG
export XDEBUG_CONFIG="idekey=artisan remote_host=10.0.2.2"
参考:http://randyfay.com/content/remote-command-line-debugging-phpstorm-phpdrupal-including-drush
【讨论】:
通过单击行首在 IDE 中添加断点。还是你在问别的? 使用这些参数可以部分工作:调试器在 artisan main() 处停止。我可以逐步完成自动加载过程,但是当我点击运行按钮时,它会错过命令的 fire() 方法中的断点 @SalvadorMaine:编辑了我的答案(参见步骤 3。) 我认为还有更多...我刚刚添加了第 4 点。试试看 这个答案应该被标记为正确!完美运行!【参考方案3】:或者,如果这一切都太复杂或无法正常工作 - 您可以使用 url (route) 触发您的工匠命令
Artisan::call('whatever:command');
【讨论】:
太棒了。我浪费了我宝贵的生命中的 2 个小时来设置其他东西,但一切都是徒劳的。这是拯救这一天的精彩回复:-) 我过去尝试过配置它,但仍然没有成功....这确实是最简单的解决方案,我只是创建一个我将在部署时注释掉的路由...。有点只是在这个配置上浪费了很多时间,这似乎是一个可行的解决方案,谢谢。 它可以工作,但我希望我能弄清楚如何在没有它的情况下让它工作!如果有人得到解决方案,请发布!以上是关于使用宅基地从 PHPStorm 调试 laravel artisan的主要内容,如果未能解决你的问题,请参考以下文章
PHPStorm、Xdebug 和远程调试(在 phpstorm 中使用 FTP)
PHPStorm - Laravel Eloquent 没有代码提示 [重复]
使用 PHPStorm 解决 PHPUnit xdebug 远程调试问题