xDebug

Итак как ни рассчитывай, что не придется отлаживать php, как ни логируй/трассируй код, все равно от отладки не уйдешь.

Когда это понадобится

Когда вы по взрослому например захотите сделать свой плагин для чужой CMS например. Ключевое слово "чужой CMS", то есть для системы, где весь код чужой и его немалое количество, так что сходу в нем не разобраться.

Но при условии,что код открыт, то есть вы его можете полностью скачать на localhost и настроить локально ваш интернет сервер на вашем ПК.

2024г.

В интернете находим расширение php xDebug и среду разработки VS Code.

Скачиваем php_xdebug-3.3.2-8.1-vs16-x86_64.dll и VSCodeUserSetup-x64-1.89.0.exe .

Повозится с настройкой придется. У нас использован XAMPP установщик.

Какие нюансы 

php.ini у нас изменяется так (не уверен от слова совсем, что тут нужно,что нет). Могу только сказать,что порт будет использоваться 9003.

zend_extension=xdebug

[XDebug]
zend_extension = C:\\xampp\\php\\ext\\php_xdebug.dll
;xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9003
xdebug.client_port=9003
;xdebug.remote_autostart=on
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir="C:\\xampp\\tmp"
xdebug.remote_log ="C:\\xampp\\tmp\\xdebug.log"

;xdebug.mode = debug
xdebug.mode = coverage,debug,develop
xdebug.start_with_request = yes

phpinfo показывает,что xDebug установлен:

фотка 1

VS Code 

Тут надо установить расширение xDebug.

Надо еще чтобы .vscode каталог был создан. Это просто настройки для отладки.

В результате стартуем отладку. Потом обновляем страницу localhost/wa/ (это у нас webasyst к примеру) и в vs Code срабатывает точка останова.

фотка 2

Видим стек вызванных методов (то что нам и надо было).

И теперь мы может спокойно разбираться с кодом того же webasyst, как он работает и как нам сделать свой плагин.

К чему надо быть готовым

Далее после подключения xDebug в php.ini некоторые страницы, которые открывались нормально, перестают открываться нормально и выводится некоторая отладочная информация об ошибках (со стеком вызова), прямо в начале странице и на всю страницу и даже намного больше размера страницы по высоте.

фотка 3

Примечание: если прокрутить страницу вниз, то вы все-таки увидите привычное изображение страницы.

А вот так та же страница выглядит без подключенного отладчика xDebug.

фотка 4

Видно конечно,что тут тоже не все нормально, но оно как-то отображается хотя бы нормально.

2024г. чего-то сломалась отладка

Как-то ни с того ни с сего сломалась отладка. Исправляя нашли от разработчиков удобный способ проверки работоспособности xDebug. Берем считываем содержание вывода phpinfo() и подставляем на страницу https://xdebug.org/wizard:

фотка 5

Нажимаем и получаем рекомендации, что сделать. Все очевидно и просто.

фотка 6

Теперь видим, что отладчик запускается и слушает порт (у нас 9003 настроен).

Но по факту отладка заработала не сразу: подменили php_xdebug.dll, конечно надо перезапускать апаче, возможно надо перезапускать VS Code, возможно еще браузер надо перезапускать. Но в какой-то момент все заработало.

Итоги

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

В чем причина такого говнокода? Плагинщики люди разные, к тому же пишут на своих версиях php,mysql,cms и т.д., и CMS это коллективный продукт. И в результате может получаться как-то так...

Ошибки

Точка входа в процедуру zend_get_parameters_array_ex не найдена в библиотеке dll. Скачай соответствующую версия xdebug для своей версии php.