Как я могу подключить Xdebug 3 к PhpStorm в Windows 10?

Я пытаюсь подключить PhpStorm и отлаживать PHP-скрипты / веб-страницы с помощью Xdebug, что я делал несколько раз.

Это мой файл php.ini (интересный фрагмент):

[xdebug]
zend_extension=C:\xampp\php\ext\php_xdebug.dll
xdebug.remote_enable=1
xdebug.remote_port=10000
xdebug.remote_mode=req

Я установил несколько точек останова и вызвал xdebug_break() в своем индексе, но выполнение кода на них не останавливается.

Это результат сценария проверки PhpStorm для Xdebug:
 Это выходные данные сценария проверки PhpStorm для Xdebug

Вывод netstat, который показывает, что PhpStorm прослушивает порт 10000:
Вывод netstat, который показывает, что PhpStorm прослушивает порт 10000


person granitba    schedule 01.12.2020    source источник
comment
Вы используете несвязанный сайт. Имеется в виду, что у вас есть отдельный фронт и отдельный restfull API? Или вы используете старый способ рендеринга на стороне сервера?   -  person vlad katz    schedule 01.12.2020
comment
Вы используете Xdebug v3 ... но все еще используете параметры конфигурации Xdebug v2. Просто используйте правильные имена параметров v3: xdebug.org/docs/upgrade_guide   -  person LazyOne    schedule 01.12.2020
comment
* ... и называется xdebug_break() в моем индексе ... `Обратите внимание, что xdebug_break() работает по-другому в Xdebug 3: теперь он просто действует как точка останова и НЕ будет инициировать сеанс отладки, если он еще не был там.   -  person LazyOne    schedule 01.12.2020
comment
@LazyOne Да, сеанс отладки инициируется самим phpstorm   -  person granitba    schedule 01.12.2020
comment
Кроме того, изначально я пытался использовать параметры конфигурации v2, но PhpStorm не проверял его и не работал.   -  person granitba    schedule 01.12.2020
comment
Кстати: stackoverflow.com/a/65091404/783119 - Xdebug 3 будет полностью поддерживаться только в следующей версии 2020.3. Отладка по-прежнему работает нормально в 2020.2 (тестировал себя, в Windows с PHP 7.4 и 8.0) .. но IDE попытается использовать параметры Xdebug 2 и, следовательно, эти предупреждения от Xdebug.   -  person LazyOne    schedule 01.12.2020
comment
@vladkatz Я не понимаю, насколько это актуально, но да, это устаревший код, поэтому я не использую отдельный API.   -  person granitba    schedule 01.12.2020
comment
@granitba Итак, используйте имена параметров Xdebug v3 и посмотрите, что должна сказать IDE (принимая во внимание мои предыдущие комментарии).   -  person LazyOne    schedule 01.12.2020
comment
@LazyOne Я хотел сказать, что пробовал использовать параметры v3, но не тестировал его, когда увидел, что он не проверяется. С именами параметров v3 я могу использовать точки останова! Я не знаю, будут ли работать другие функции, такие как профилирование.   -  person granitba    schedule 01.12.2020
comment
@grantiba это актуально, так как xdebug использует файлы cookie, и если вы используете разделенные переднюю и заднюю части, задняя часть не распознает cookie, поскольку это перекрестный домен. была эта проблема раньше   -  person vlad katz    schedule 02.12.2020
comment
@vladkatz А, ладно, я этого не осознавал. В любом случае, теперь он работает, по крайней мере, точки останова.   -  person granitba    schedule 02.12.2020


Ответы (2)


Измените строки в php.ini на

xdebug.mode=debug

и установите порт PhpStorm для прослушивания 9003 вместо 9000.

В xdebug v3 порт xdebug по умолчанию был изменен на 9003: https://xdebug.org/docs/upgrade_guide#Step-Debugging

person Rijad Morina    schedule 01.12.2020

Изменять

из

xdebug.remote_enable=1
xdebug.remote_port=10000
xdebug.remote_mode=req

в

xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_port=10000
person WebEXP0528    schedule 02.12.2020