17

我设置了 Laravel Homestead。然后我配置了 homestead xdebug.iniPHPStorm以使调试工作。

这是我在宅基地内的 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"

要开始调试会话,我遵循的步骤是

  1. 在 PHPStorm --> 开始监听连接
  2. 在 PHPStorm 中设置断点
  3. 在我的浏览器中 --> 使用 XDebug Chrome Helper 或添加到我的 URL ?XDEBUG_SESSION_START=
  4. 加载页面

这完美地工作。我的问题是当我在宅基地命令行中运行php artisan命令时,我无法让它达到我的断点。

我试过的

  1. XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=server_name" php -dxdebug.remote_host="127.0.0.1" artisan mycommand

  2. php -d xdebug.profiler_enable=On artisan mycommand

  3. 我也尝试过设置xdebug.remote_autostart=Onsudo service php5-fpm restart但我的断点仍然没有在 PHPStorm 中被击中

4

3 回答 3

27

有两件事很重要:

  1. remote_connect_back无法在 CLI 情况下工作,因为 Xdebug 在控制台中无法检测到远程 IP
  2. 在 NAT 网络配置中使用 homestead / VirtualBox 时,您的开发机器(正在运行 PHPStorm)没有127.0.0.1从 VM 内部看到的 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
  1. 编辑如果您的断点未命中,则必须正确设置文件夹映射(因为您在 IDE 中的路径与 Web 服务器看到的不同:

文件夹映射

  1. export PHP_IDE_CONFIG="serverName=yourservername"在您的虚拟机中执行,您yourservername在“名称”下的屏幕截图中配置的内容在哪里

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

  3. 并将您的 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-include-drush

于 2015-03-04T13:51:39.670 回答
23

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

Artisan::call('whatever:command');
于 2016-10-12T21:17:38.230 回答
0

在最新版本的 Homestead 中,你可以这样做xphp artisan whatever,phpstorm 会自动弹出一个窗口。

https://laravel.com/docs/8.x/homestead#debugging-cli-applications

于 2021-09-28T09:41:58.217 回答