XDebug записывает в журнал только сценарии CLI, а не запросы браузера.

Я пытаюсь определить, почему PhpStorm через некоторое время теряет связь с XDebug 3, работающим в контейнере Docker в Windows, поэтому у меня есть xdebug.log=/path/to/xdebug.log в .ini файл, и я просматриваю этот файл журнала.

XDebug успешно выполняет пошаговую отладку как для запросов браузера, так и для сценариев CLI, но записывает в журнал только при выполнении сценариев CLI. Журнал остается неизменным во время пошаговой отладки, если обрабатывается запрос браузера.

Почему CLI и браузер имеют значение для ведения журнала XDebug? Как я могу включить его для запросов браузера?

1 ответ

PHP в интерфейсе командной строки и PHP, который работает через веб-сервер, могут иметь разные файлы INI. Вы можете проверить, какие из них используются, используя php --ini в интерфейсе командной строки или с помощью сценария, запускаемого через браузер.

Если они используют один и тот же файл INI, проверьте, имеет ли значение xdebug.logверно. С использованием php -m xdebug | grep log в интерфейсе командной строки или снова phpinfo() в сценарии.

Если они оба верны, то это также может быть проблема с разрешениями. Если он был создан пользователем, который запускает команды интерфейса командной строки (вероятно: вами), то у пользователя веб-сервера, скорее всего, также не будет разрешений на запись в него. Вы можете проверить владельца и права доступа к файлу журнала с помощью ls -l /path/to/xdebug.

Также возможно, что пользователь веб-сервера даже не имеет доступа к /path/to часть, которую вы можете проверить с помощью ls -l /path/to/и проверьте, является ли пользователь веб-сервера частью маски доступа.

Если это ваша личная машина (а не что-то общее или производственное), вы можете исправить разрешения на /path/to/xdebug.log с участием chmod 0666 /path/to/xdebug.log который должен предоставить всем пользователям доступ на запись к этому файлу.

Другие вопросы по тегам