Вопрос

я использую 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, как показано на скриншотах:

fake server

remote debug

нажмите Отлаживать Кнопка на главной панели инструментов. Phpstorm начнет прослушиваться подключения отладчика.

В командной строке запустите свой скрипт:

d:\dev\zend\ZendServer\bin\php.exe d:\work\attaches\sample\helps.php

PhpStorm нанесет удар по точке останова:

breakpoint hit

Это было протестировано в 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-ключ по умолчанию.

  1. Нажмите запустить.
  2. Нажмите «Редактировать конфигурации ...
  3. Нажмите на зеленый +
  4. Выберите скрипт PHP.
  5. Предоставьте имя в поле «Имя».
  6. Предоставьте полный путь к вашему скрипту в поле файла.
  7. Нажмите ОК.
  8. Выберите только что настройка сценария, который вы только что настроили в этом выпадении:

Screenshot of PhpStorm menu bar

  1. Нажмите кнопку «Запустить» или отладки. Ваш скрипт должен работать, и он должен поймать любые установленные точки останова.

Если вы запустите скрипт, вы можете увидеть вывод здесь:

Screenshot of Run widget, typically docked on the bottom of the window

Если вы отлаживаете сценарий, вы можете увидеть вывод здесь:

Screenshot of Console widget, docked in the Debug widget

Проверьте, что переменные среды 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 начал работать после команды выше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top