Попытка отладки в Windows с помощью PHP 7.4 и NetBeans 8.2 RC под XAMPP 3.2.4

ПРОБЛЕМА: в настоящее время я не могу отладить php в NetBeans 8.2 RC в Windows 10. NetBeans показывает Ожидание подключения в правом нижнем углу и никогда не подключается.

Большинство уроков, которые я нашел, были написаны несколько лет назад:

Обратите внимание, что некоторые из них имеют разные инструкции о том, что должно быть в php.ini.

Материалы Xdebug

phpinfo() перечисляет Xdebug как работающую версию 2.9.4 с ключом IDE: netbeans-xdebug, так что, по крайней мере, он распознается. соответствующая информация php.ini [XDebug]:

...
output_buffering=off
...
[XDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug-2.9.4-7.4-vc15-x86_64.dll"
xdebug.idekey = netbeans-xdebug
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "c:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_autostart = 0
xdebug.remote_connect_back = 0
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_log="c:\xampp\tmp\xdebug.txt"
xdebug.remote_port = 9000
xdebug.show_local_vars = 9
xdebug.trace_output_dir = "c:\xampp\tmp"
; 3600 (1 hour), 36000 = 10h
xdebug.remote_cookie_expire_time = 36000

информация xdebug из phpinfo() xdebug_1 xdebug_2 xdebug_3

Выполняется 'netstat -an', пока netbeans ожидает подключения введите здесь описание изображения Обратите внимание на двустороннее соединение между 57418 и 9000

журнал ошибок xdebug

[10112] Log opened at 2020-07-27 15:33:34
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] E: Time-out connecting to client (Waited: 200 ms). :-(
[10112] Log closed at 2020-07-27 15:33:34

[10112] Log opened at 2020-07-27 15:33:47
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] I: Connected to client. :-)
[10112] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///C:/xampp/apps/wordpress/htdocs/index.php" language="PHP" xdebug:language_version="7.4.0" protocol_version="1.0" appid="10112" idekey="netbeans-xdebug"><engine version="2.9.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2020 by Derick Rethans]]></copyright></init>

[10112] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

[10112] Log closed at 2020-07-27 15:33:51

[10112] Log opened at 2020-07-27 15:33:52
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] E: Time-out connecting to client (Waited: 200 ms). :-(
[10112] Log closed at 2020-07-27 15:33:52

[10112] Log opened at 2020-07-27 15:34:05
[10112] I: Connecting to configured address/port: 127.0.0.1:9000.
[10112] I: Connected to client. :-)
[10112] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///C:/xampp/apps/wordpress/htdocs/index.php" language="PHP" xdebug:language_version="7.4.0" protocol_version="1.0" appid="10112" idekey="netbeans-xdebug"><engine version="2.9.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2020 by Derick Rethans]]></copyright></init>

php_xdebug-2.9.4-7.4-vc15-x86_64.dll была dll, рекомендованной xdebug.org/wizard, и находится в ожидаемом месте файла.

Конфигурация NetBeans

Поскольку я пытаюсь отладить плагин WordPress, у меня есть весь каталог «wordpress» в качестве моего проекта в NetBeans.

Источники:

Свойства проекта

Хм... Версия PHP установлена ​​на 7.0, и я пытаюсь использовать 7.4... но он говорит, что версия PHP используется только для подсказок. Является ли это простым случаем «NetBeans 8.2 RC не поддерживает PHP 7.4»?

Выполнить настройку:

Выполнить настройку

Любая помощь приветствуется. Заранее спасибо. РЕДАКТИРОВАТЬ: включить информацию xdebug из phpinfo(), результаты netstat и дамп xdebug.

Потенциально полезно После изменения поведения для повторного запуска браузера я заметил, что проект не загружался с флагом ?XDEBUG_SESSION_START=netbeans-xdebug, пока после я не нажму кнопку "Стоп". Мне это показалось странным, но я попытался запустить отладчик, нажать кнопку «Стоп» (чтобы запустить веб-сайт с флагом) и затем подключить отладчик. Это не сработало (NetBeans работает в режиме ожидания подключения, а Chrome — в режиме ожидания локального хоста). В конце концов Chrome загружается, но когда я пытаюсь начать переход к той части сайта, чтобы запустить php-код, который я пытаюсь отладить, он возвращается к «ожиданию локального хоста» со следующим дампом xdebug (он никогда не переходит не на главной странице):

[22340] Log opened at 2020-07-27 15:49:37
[22340] I: Connecting to configured address/port: 127.0.0.1:9000.
[22340] I: Connected to client. :-)
[22340] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" fileuri="file:///C:/xampp/apps/wordpress/htdocs/index.php" language="PHP" xdebug:language_version="7.4.0" protocol_version="1.0" appid="22340" idekey="netbeans-xdebug"><engine version="2.9.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2020 by Derick Rethans]]></copyright></init>

person sacredfaith    schedule 27.07.2020    source источник
comment
1) Хм... Версия PHP установлена ​​на 7.0, и я пытаюсь использовать 7.4... но пишет, что версия PHP используется только для подсказок. Является ли это просто простым случаем «NetBeans 8.2 RC не поддерживает PHP 7.4»? Я не пользователь NetBeans.. но это похоже на уровень языка PHP, а не на настоящий интерпретатор/исполняемый файл PHP. Уровень языка используется редактором/инспекцией, чтобы сообщить, что вы не используете функции из более новой версии PHP (поэтому ваш код будет работать в этой версии PHP и не даст сбоев)   -  person LazyOne    schedule 27.07.2020
comment
2) NetBeans показывает Ожидание подключения в правом нижнем углу и никогда не подключается. На всякий случай: это Xdebug подключается к IDE, а НЕ наоборот. поэтому вам нужно проверить: 2.1) Фактические/живые настройки Xdebug -- опубликуйте весь раздел Xdebug вывода phpinfo() 2.2) Может быть, NetBeans не может прослушивать порт TCP 9000? Проверьте с помощью netstat или аналогичного, чтобы узнать, какой процесс использует его, когда IDE прослушивает входящие соединения.   -  person LazyOne    schedule 27.07.2020
comment
2.3) Соберите и поделитесь журналом Xdebug для такого неудачного сеанса отладки (старайтесь не смешивать несколько сеансов в одном: пустой журнал между ними) — он сообщит, попытается ли он подключиться и каков результат.   -  person LazyOne    schedule 27.07.2020
comment
Отредактировано, чтобы включить раздел xdebug в phpinfo, результаты netstat и дамп ошибок xdebug из одного сеанса. Я также должен отметить, что я попытался изменить поведение для запуска браузера, но он не запускается с флагом ?XDEBUG_SESSION_START=netbeans-xdebug до тех пор, пока ПОСЛЕ того, как я не нажму кнопку "Стоп"... кажется странным. В этот момент (и когда был сгенерирован дамп xdebug) браузер вращается в режиме «ожидания локального хоста», а netbeans — в режиме «ожидания подключения».   -  person sacredfaith    schedule 27.07.2020
comment
Кстати, я заметил, что метка времени для дампа xdebug гласит: «Журнал открыт в 2020-07-27 15:49:37 ... но я нахожусь в Бангкоке, Таиланд, и здесь 22:49, а не 15:49. Может ли ЭТО все испортить? Обратите внимание, что в файле php.ini я установил часовой пояс Азия/Бангкок. Может быть, мне нужно установить его в другом месте?   -  person sacredfaith    schedule 27.07.2020
comment
1) Время: игнорировать -- оно может быть в часовом поясе UTC; это не должно вызывать никаких проблем здесь. 2) Журнал: показывает успешные и неудачные сеансы. Это может быть связано с тем, что вы где-то напортачили с конфигурацией NetBeans (из-за конфигурации). Успешный сеанс не имеет много информации, всего несколько секунд, и ничего не записано, кроме продолжения выполнения типа ответа.   -  person LazyOne    schedule 27.07.2020
comment
codewall.co.uk/ wp-content/uploads/2018/09/ — это порт отладчика. Ваш скриншот (i.stack.imgur.com/QVmjn.png) для некоторых прокси (я думаю, прокси-сервер GBDp) - здесь может быть проблема / неправильная конфигурация (вам нужно установить фактическое прокси-программное обеспечение на другой порт и т. д. и т. д.).   -  person LazyOne    schedule 27.07.2020
comment
Поскольку я не пользователь NetBeans, я не могу сказать точные шаги/что проверять (поскольку я не очень хорошо знаком с их интерфейсом). Я предлагаю следующее: попробуйте избавиться от настроек NetBeans и начать с нуля (у вас есть правильные значения по умолчанию). Затем просто следуйте ОДНОМУ уроку и не делайте ничего лишнего, что там не указано.   -  person LazyOne    schedule 27.07.2020
comment
Я даже не знаю, как ответить на этот вопрос, но я провел еще несколько поисков и увидел, что довольно много людей используют vscode с xdebug — последовал вашему совету и последовал новому блестящему руководству (самый быстрый способ избавиться от NetBeans — это просто не используйте NetBeans, но совершенно другую IDE). В любом случае, я отлаживал менее 20 минут, используя это: stackify.com/php-debugging-guide По сравнению с 5+ часами ожидания ответа на этот вопрос.   -  person sacredfaith    schedule 28.07.2020


Ответы (1)


Для бедняги, пытающегося заставить работать NetBeans, ответ таков: не используйте NetBeans. Я понимаю, что это ужасный ответ, но после 5 часов попыток заставить его работать по сравнению с 20 минутами, заставляющими работать VSCode, NetBeans просто не имеет смысла (если у вас нет другой причины для его использования).

Чтобы заставить VSCode работать, я в основном следовал этому руководству: https://stackify.com/php-debugging-guide/

В сочетании со следующими настройками php.ini:

...
output_buffering=off
...
[XDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug-2.9.4-7.4-vc15-x86_64.dll"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1

Обратите внимание, как меньше настроек мне действительно нужно!

person sacredfaith    schedule 28.07.2020
comment
Примечание: Модеры, если ответ был неверным, не стесняйтесь редактировать/удалять/и т. д. по мере необходимости. Я понимаю, что отвечая Как мне решить проблему X? с Не спрашивайте об этом, вместо этого задайте этот другой вопрос не дает хорошего ответа. Я просто не уверен, как лучше всего сохранить то, что я пробовал, а также то, на что я попал, не публикуя это в качестве ответа. Спасибо. - person sacredfaith; 28.07.2020