从PHPStorm与homestead调试laravel artisan

从PHPStorm与homestead调试laravel artisan,laravel,vagrant,xdebug,laravel-routing,homestead,Laravel,Vagrant,Xdebug,Laravel Routing,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" 要启动调试会话,我遵循以

我建立了拉维尔家园。然后,我配置了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\u会话\u启动=
  • 加载页面
  • 这很好用。我的问题是,当我在homestead命令行中运行
    php artisan
    命令时,我无法让它达到断点

    我尝试过的

    zend_extension=xdebug.so
    xdebug.remote_autostart = on
    xdebug.remote_enable = on
    xdebug.remote_connect_back = on
    xdebug.remote_port = 9000
    xdebug.idekey = "vagrant"
    
  • XDEBUG\u CONFIG=“idekey=PHPSTORM”PHP\u IDE\u CONFIG=“serverName=server\u name”PHP-dxdebug.remote\u host=“127.0.0.1”artisan mycommand

  • php-d xdebug.profiler\u enable=在artisan mycommand上

  • 我还尝试设置
    xdebug.remote_autostart=On
    然后
    sudo服务php5 fpm重启
    ,但我的断点在PHPStorm中始终没有被命中


  • 有两件事很重要:

  • remote\u connect\u back
    无法在CLI情况下工作,因为当您在控制台中时,Xdebug无法检测到远程IP
  • 在NAT网络配置中使用homestead/VirtualBox时,您的开发机器(运行PHPStorm)没有从VM内部看到的IP
    127.0.0.1
    。相反,它通常具有类似IP的
    10.0.2.2
    。要找到正确的IP,请查看Apache的
    access.log
  • 以下几点对我很有用:

    php -dxdebug.remote_autostart=on -dxdebug.remote_connect_back=off 
      -dxdebug.remote_host=10.0.2.2 artisan
    
  • 编辑如果未命中断点,则必须正确设置文件夹映射(因为IDE中的路径与web服务器看到的路径不同:
  • 在虚拟机中导出PHP\u IDE\u CONFIG=“serverName=yourservername”,其中
    yourservername
    是您在“name”下的屏幕截图中配置的

  • 添加带有IDE密钥的Php远程调试配置和上面配置的服务器

  • 并将IDE密钥和远程_主机添加到VM的XDEBUG-CONFIG

    导出XDEBUG\u CONFIG=“idekey=artisan remote\u host=10.0.2.2”


  • 参考资料:

    或者,如果这一切太复杂或不起作用,您可以使用url(路由)触发artisan命令

    Artisan::call('whatever:command');
    

    您最终成功了吗?您通过单击行的开头在IDE中添加断点。或者您在询问其他问题吗?使用这些参数部分有效:调试器在artisan main()处停止.我可以一步一步地完成自动加载过程,但当我点击run按钮时,它会错过命令fire()中的断点method@SalvadorMaine:编辑我的答案(请参见步骤3。)我想还有更多……我刚刚添加了第4点。试一试这个答案应该被标记为正确!工作完美无瑕!太棒了。我浪费了2个小时的宝贵生命来设置其他东西,但都是徒劳的。下面是一个精彩的回答来拯救这一天:-)我在过去尝试过配置,但仍然没有成功。。。。这确实是最简单的解决方案,我只是创建了一个路由,我将在部署时对其进行注释。。。。在这个配置上浪费了太多的时间,这似乎是一个可行的解决方案,谢谢。它可以工作,但我希望我能想出如何在没有它的情况下让它工作!如果有人得到解决方案,请发布!