Отладка мастера laravel от PHPStorm с усадьбой
Я настраиваю 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 =
- Загрузите страницу
Это прекрасно работает. Моя проблема в том, что когда я нахожусь внутри командной строки, и я запускаю команду 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
Важны две вещи:
-
remote_connect_back
не может работать в случае CLI, потому что Xdebug не может обнаружить удаленный IP-адрес, когда вы находитесь в консоли.
- При использовании homestead/VirtualBox в сетевой конфигурации NAT ваша машина разработки (которая работает под управлением PHPStorm) не имеет 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
- edit Если ваши точки останова не пострадали, вам необходимо правильно настроить сопоставления папок (поскольку ваш путь в среде IDE отличается от того, что видит веб-сервер:
![Folder Mappings]()
-
Сделайте export PHP_IDE_CONFIG="serverName=yourservername"
в вашей виртуальной машине, где yourservername
- это то, что вы настроили на скриншоте под "name"
-
Добавьте конфигурацию удаленной отладки Php с ключом IDE и указанным выше сервером
![Debug Configuration]()
-
И добавьте ключ 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
Ответ 2
Или, если все это слишком сложно или не работает, вы можете запустить команду artisan с помощью url (route), используя
Artisan::call('whatever:command');