Скрытый код🔎В
данной статье автор рассматривает проблему взаимодействия между расширениями Xdebug и OPcache в PHP-приложениях, особенно при использовании встроенного веб-сервера PHP. Проблема заключается в том, что Xdebug и OPcache переопределяют обработчик компиляции файлов PHP, и это может привести к тому, что точки останова (breakpoints), установленные в редакторе кода, не работают правильно при каждом запросе к приложению.
Автор обнаружил, что порядок загрузки этих расширений в php.ini имеет большое значение. Если OPcache загружается перед Xdebug, то он может "потерять" точки останова, так как не вызывает обработчик компиляции файлов, установленный Xdebug.
Для решения этой проблемы автор предлагает несколько вариантов:
🟠Загружать Xdebug после OPcache: Согласно документации, Xdebug должен быть загружен после OPcache в php.ini. Это гарантирует правильное взаимодействие между расширениями.
🟠Отключить OPcache: Если OPcache не используется в проекте, его можно просто отключить, установив opcache.enable=0 в php.ini.
🟠Контролировать порядок загрузки через наименование файлов конфигурации: Если используется несколько файлов конфигурации (например, xdebug.ini и opcache.ini), можно управлять порядком загрузки, именуя файлы таким образом, чтобы Xdebug загружался после OPcache. Например, xdebug.ini можно назвать 99-xdebug.ini, а opcache.ini 10-opcache.ini, чтобы убедиться, что Xdebug загружается последним.
🟠Убедиться, что Xdebug и OPcache указаны в правильном порядке в одном файле конфигурации: Если используется только один файл конфигурации, убедитесь, что строки zend_extension=opcache и zend_extension=xdebug расположены в правильном порядке.
Автор также упоминает о том, что начиная с версии Xdebug 3.3, в Diagnostic Log будет включено предупреждение о том, что Xdebug должен быть загружен после OPcache. Предупреждение будет содержать ссылку на документацию, объясняющую проблему и возможные решения.