Отладка командной строки PHP в Phpstorm
-
24-10-2019 - |
Вопрос
я использую Phpstorm Как мой основной инструмент для отладки PHP и очень доволен. До сих пор я использовал Firefox для запуска сценариев, и Phpstorm прекрасно ловится.
Теперь у меня есть ситуация, когда я запускаю скрипт PHP через командную строку (не браузер), и я хочу знать, есть ли способ настроить Phpstorm, чтобы поймать разрывы при запуске скрипта PHP через командную строку?
Решение
Пожалуйста смотреть/голосовать Связанная проблема Phpstorm.
На данный момент конфигурация немного сложна. Должно быть возможно отлаживать как описано в Zend KB, с фальшивым сервером и PHP удаленная отладка Конфигурация в Phpstorm. Обратите внимание, что у этого учебника есть ошибка, вам нужно установить как Query_string как это (в Windows):
SET "QUERY_STRING=start_debug=1&debug_port=10137&debug_host=127.0.0.1&debug_stop=1&no_remote=1&debug_session_id=10000"
(Обратите внимание на разницу в цитировании, которая важна).
Установите Phpstorm, как показано на скриншотах:
нажмите Отлаживать Кнопка на главной панели инструментов. Phpstorm начнет прослушиваться подключения отладчика.
В командной строке запустите свой скрипт:
d:\dev\zend\ZendServer\bin\php.exe d:\work\attaches\sample\helps.php
PhpStorm нанесет удар по точке останова:
Это было протестировано в Windows с установкой Zend Server, но должно быть одинаковым в других системах и с XDebug.
Если вы хотите отлаживать непосредственно от Phpstorm, используйте PHP сценарий Запустить/отладку тип конфигурации. Ваш экземпляр PHP, настроенный для этого проекта Zend Debugger или же Xdebug включено в файлах конфигурации.
PHP Home и режим отладчика могут быть указаны в File | Settings | PHP
.
Только что проверено с помощью установки Zend Server (PHP Home: d:\dev\zend\ZendServer\bin
и Zend Debugger, отлично работает для меня.
Другие советы
Чтобы включить отладь PHP с XDebug на строке оболочки/командной строки с Phpstorm очень просто:
export XDEBUG_CONFIG="idekey=PHPSTORM"
В Windows CLI используйте SET вместо экспорта.
set XDEBUG_CONFIG="idekey=PHPSTORM"
Убедитесь, что PhpStorm прослушивает подключения отладки PHP.
Чтобы отключить отладку из командной строки конец:
unset XDEBUG_CONFIG
Это (phpstorm)-Phpstorm IDE-ключ по умолчанию.
- Нажмите запустить.
- Нажмите «Редактировать конфигурации ...
- Нажмите на зеленый +
- Выберите скрипт PHP.
- Предоставьте имя в поле «Имя».
- Предоставьте полный путь к вашему скрипту в поле файла.
- Нажмите ОК.
- Выберите только что настройка сценария, который вы только что настроили в этом выпадении:
- Нажмите кнопку «Запустить» или отладки. Ваш скрипт должен работать, и он должен поймать любые установленные точки останова.
Если вы запустите скрипт, вы можете увидеть вывод здесь:
Если вы отлаживаете сценарий, вы можете увидеть вывод здесь:
Проверьте, что переменные среды SERVER_NAME
а также SERVER_PORT
установлены. Phpstorm нуждается в том, чтобы они выполняли правильное картирование. Установите их с экспортом в Bash или вручную в PHPScript. В обоих случаях phpstorm может найти его, затем под $_SERVER['SERVER_NAME']
а также $_SERVER['SERVER_PORT']
правильно.
Для меня (на macOS) это сработало так:export XDEBUG_CONFIG="idekey=12345"
Ни одно из этих предложений не работало для меня.
Если вы находитесь в той же ситуации, попробуйте эту команду (проверьте правильный путь интерпретатора PHP)
/usr/bin/php -dzend_extension=xdebug.so -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_autostart=1 [PHP_SCRIPT]
На macOS я использовал разные bash_profile. Сначала мне пришлось запустить следующую команду:
source ~/.bash_profile
Это изменило мой PHP с встроенного/usr/bin/php на тот, который установлен через XAMPP. XDebug Phpstorm начал работать после команды выше.