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
который должен предоставить всем пользователям доступ на запись к этому файлу.