Не работают точки останова в Xdebug
Всем привет. Не срабатывают точки останова загадочным образом в xdebug. Выставляю точку останова -> Обновляю страницу в браузере -> Точка останова меняется с красного круга на серое кольцо (непроверенная точка останова).
При этом в сообщениях xdebug нет ошибок. Смущает только "Cannot evaluate code without a connection" - надпись, которая появляется, если ввести что-либо в консоль для отладки.
Пробовал так делать с включённым расширением xdebug helper в Chrome, пробовал с выключенным - результат такой же.
Использую: PHP + xdebug + Open Server + vscode
PHP: 8.0.22
xDebugger: 3.2.1-8.0-vs16-x86_64 (последний с оф сайта)
OpenServer: 5.4.3
VSCode: 1.77.1
Пробовал разные инструкции, но последний раз настраивал с помощью мастера настройки на сайте xdebugger.
Вот текущие настройки. Если их недостаточно и нужно что-то ещё, то дайте знать)
Полный вывод phpinfo(): https://arcean.ru/stack-overflow/php-info.html
Полный вывод xdebug_info(): https://arcean.ru/stack-overflow/xdebug-info.html
Настройки xdebug в workspace.json: https://arcean.ru/stack-overflow/workspace.json
php.ini (включён xdebug):
; ----------------------------
; Zend extensions
; ----------------------------
;zend_extension = opcache
zend_extension = xdebug
(включается автоматически при перезагрузке сервера)
php.ini (настройки xdebug):
[xdebug]
zend_extension="%sprogdir%/modules/php/%phpdriver%/ext/php_xdebug.dll"
xdebug.log="%sprogdir%/userdata/temp/xdebug/log/access.log"
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = yes
xdebug.idekey = vsc
xdebug.discover_client_host= false
(пути прописываются автоматически при перезагрузки сервера)
Ответы (1 шт):
В общем, решить вопрос не удалось. Но я нашёл альтернативу и выяснил кое что интересное.
Начнём с альтернативы. Я установил плагин PHP Server в VSCode, чтобы заменить им OpenServer. Затем я скачал PHP 8.0 с официального сайта, создал папку PHP/PHP_8.0/ и разместил в ней файлы из zip-архива. В них было 2 php.ini-подобных файла, один ini-develop, второй ini-production (форматы по памяти написал). Я изменил php.ini-develop на php.ini.
Затем в настройках плагина PHP Server я добавил путь до php.exe и php.ini

После этого я начал редактирование php.ini. В нём я добавил строку zend_extension = xdebug после ;zend_extension=opcache. Затем спустился чуть ниже и после ; Module Settings ; добавил такие строки:
[xdebug]
xdebug.mode = debug
xdebug.idekey = vsc
xdebug.start_with_request = yes
Скриншот для наглядности:
Ничего другого про xdebug в php.ini нет
Затем скачал последнюю версию xdebug, переименовал в php_xdebug.dll и разместил её в PHP/PHP_8.0/ext.
Вопреки многим инструкциям, в моем случае указывать путь до xdebug не нужно. Интерпретатор сам добавляет php_ и .dll для "xdebug", когда пытается его использовать. Поэтому достаточно было просто назвать файл php_xdebug.dll, разместить его в папке ext и добавить zend_extension = xdebug, чтобы сослаться на файл.
После этого я запустил php.exe, открылась консоль и я увидел в ней ошибку, что не удалось запустить xdebug. Я забрался в php.ini и указал в нём папку ext в пути для расширений
; On windows:
extension_dir = "ext"
После этого установил плагин xdebug в VSCode и расширение xdebug для Chrome. Мой текущий settings.json в VSCode:
"php.validate.executablePath": "C:/Program Files/PHP/PHP_8.0/php.exe",
"phpserver.phpPath": "C:/Program Files/PHP/PHP_8.0/php.exe",
"phpserver.phpConfigPath": "C:/Program Files/PHP/PHP_8.0/php.ini",
"php.debug.executablePath": ""
После всего этого счастья запустил xdebug в VSCode, установил точку останова, запустил сервер, включил расширение xdebug в Chrome, обновил страницу в браузере с исполняемым файлом и всё готово
Насчёт настройки сервера это всё
Теперь к интересному. Когда я запустил php.exe в OpenServer, я увидел это:

Оказалось, что почти никакие модули в нём не работали. Может быть я допустил ошибку в установке, может что-либо ещё, но модули, которые я не трогал и которые только "из коробки", на сервере не работали. Так что проблема была в сервере


