从PHPStorm调试laravel工匠与宅基地

时间:2015-01-14 05:22:21

标签: laravel vagrant xdebug laravel-routing homestead

我设置了Laravel 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"

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

  1. 在PHPStorm中 - >开始侦听连接
  2. 在PHPStorm中设置断点
  3. 在我的浏览器中 - >使用XDebug Chrome Helper或添加到我的URL?XDEBUG_SESSION_START =
  4. 加载页面
  5. 这完美无缺。我的问题是当我进入宅基地命令行并且运行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=On然后sudo service php5-fpm restart,但我的断点在PHPStorm中仍然没有被击中

2 个答案:

答案 0 :(得分:24)

有两件事很重要:

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

    php -dxdebug.remote_autostart=on -dxdebug.remote_connect_back=off 
      -dxdebug.remote_host=10.0.2.2 artisan
    
    1. 编辑如果未点击断点,则必须正确设置文件夹映射(因为IDE中的路径与Web服务器看到的路径不同:
    2. Folder Mappings

      1. 在您的虚拟机中执行export PHP_IDE_CONFIG="serverName=yourservername",其中yourservername是您在屏幕截图中配置的" name"

      2. 使用IDE密钥和上面配置的服务器添加Php远程调试配置 Debug Configuration

      3. 并将您的IDE密钥和remote_host添加到VM的XDEBUG-CONFIG

        export XDEBUG_CONFIG="idekey=artisan remote_host=10.0.2.2"

      4. 参考文献:http://randyfay.com/content/remote-command-line-debugging-phpstorm-phpdrupal-including-drush

答案 1 :(得分:12)

或者,如果一切都太复杂或不起作用 - 您可以使用

通过网址(路线)触发您的工匠命令
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]