XDebug - andyceo/documentation GitHub Wiki
-
xdebug.max_nesting_level Ограничивает рекурсию до указанной глубины вложенных вызовов, по достижении порогового значения принудительно завершает приложение. Начальная активизация
main()
для запуска программы считается первым фреймом. Пример:xdebug.max_nesting_level=50
-
xdebug.remote_host Хост, на котором работает xdebug-клиент. Игнорируется, если задан параметр
xdebug.remote_connect_back
-
xdebug.remote_connect_back Если этот параметр включен, параметр
xdebug.remote_host
игнорируется, а Xdebug пытается подключиться к клиенту, выполнившему HTTP-запрос. Он проверяет переменные$_SERVER['HTTP_X_FORWARDED_FOR']
и$_SERVER['REMOTE_ADDR']
, чтобы узнать, какой IP-адрес использовать.Если сконфигурирован
xdebug.remote_addr_header
, переменная$SERVER
с заданным именем будет проверена перед переменными$_SERVER['HTTP_X_FORWARDED_FOR']
и$_SERVER['REMOTE_ADDR']
. Этот параметр не применяется для отладки через CLI, так как переменные заголовка$SERVER
недоступны.Обратите внимание, что фильтр недоступен, и любой, кто может подключиться к веб-серверу, сможет начать сеанс отладки, даже если его адрес не соответствует xdebug.remote_host.
-
xdebug.remote_port Порт, к которому Xdebug пытается подключиться на удаленном хосте. Порт 9000 по умолчанию используется как для клиента, так и для связанного с ним debugclient. Так как многие клиенты используют этот номер порта, лучше оставить этот параметр без изменений.
Здесь говорится о том, как запустить отладку на сервере, на который есть ssh-доступ, и установлен php и xdebug.
-
Пробросим удаленный порт на локальный:
ssh -R 9000:localhost:9000 example
Мы открываем порт 9000 (первые 9000 в указанной команде) на удаленном сервере (example) (этот порт будет слушать sshd) на интерфейсе localhost (по умолчанию). Все соединения на этот порт будут слушаться sshd и перенаправляться на порт 9000 (вторые 9000 в указанной команде) на интерфейс localhost (localhost в указанной команде) той машины, с которой мы запустили эту команду.
-
Настроим xdebug на сервере так, чтобы он при отладке соединялся с localhost:9000:
xdebug.remote_enable=1 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_connect_back=0 xdebug.remote_host=localhost xdebug.remote_port=9000
-
На рабочей машине (на которой установлен PhpStorm и выполнена команда проброса порта из п.1) запустим PhpStorm и включим слушание 9000-го порта. Все, отладкой можно пользоваться. Заметим лишь, что при данном пробросе портов, настройка PhpStorm ничем не будет отличаться от настройки при локальной отладке, когда php установлен там же, где и сам PhpStorm.
... то можно вставить такой сниппет для получения стека вызовов:
$bt = debug_backtrace();
echo "<pre>";
foreach ($bt as $k => $v) {
echo $k . ' : ';
foreach (array_keys($v) as $v2) {
echo $v2 . ' ';
if (in_array($v2, ['function', 'class', 'type'])) {
echo $v[$v2];
}
}
echo "\n";
}
echo "</pre>";
die;