Отладка POST-запроаса

  • Автор темы Автор темы Slon747
  • Дата начала Дата начала

Slon747

Новичок
Open Server
Visual Studio Code + Xdebug
На скрипт передается POST-запрос.
Реально ли в отладчике трассировать выполнение скрипта или нужно имитировать процесс, считывая файл с содержимым запроса?
 
на счет Visual Studio Code не знаю точно, тк не пользуюсь, но не думаю что там проблема - реально
 
Сама постановка вопроса вызывает когнитивный диссонанс.
В Xdebug уже видно глобальные массивы в том числе и $_POST. Если надо работать с пост на пару уровней ниже, то возможно нужны какие-то снифферы.
Но повторюсь, сам вопрос не совсем понятен.
 
В Visual Studio Code открываю php-скрипт и нажимаю кнопку "Debug PHP".
На точке останова вижу значения переменных.
Но это потому что я запустил скрипт из IDE.
Мне же требуется отладить обработку данных, полученных через POST.
Можно ли как-то перехватить это?
 
Slon747, просто сделай html форму. В качестве action укажи url своего скрипта. Посылай POST данные из браузера и лови их у себя иксдебагом.
 
Slon747, просто сделай html форму. В качестве action укажи url своего скрипта. Посылай POST данные из браузера и лови их у себя иксдебагом.

Пробую пока просто перехватывать запрос из браузере, без параметров:
PHP:
<?
$var = 100;
print "hello: ".$var;
?>

Если запускаю скрипт из Visual Studio Code, то брекпойнт срабатывает.
Если же из браузера запускаю, то не срабатывает.
Пробовал как обычный браузер, так и Opera из меню "Open Server ->Программы->Opera".
 
Может у меня неправильно настроен xdebug?

Вот такая секция в php.ini:

[xdebug]
zend_extension = C:\OSPanel\modules\php\PHP_7.2\ext\php_xdebug.dll
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
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"
 
настройка она от того и настройка, что ее каждый настраивает иначе,
вопрос больше а под что ты настраивал (как вызываешь, как сообщаешь ide чтоб она среагировала)
 
вопрос больше а под что ты настраивал (как вызываешь, как сообщаешь ide чтоб она среагировала)

В тот то и дело, что я не знаю, как перехватить вызов из браузера http:\\localhost\test.php.
Если это получится, то, думаю, и все остальное тоже.
 

Почитал, так прописал параметры в php.ini:
[xdebug]
zend_extension = C:\OSPanel\modules\php\PHP_7.2\ext\php_xdebug.dll
xdebug.idekey = "code"
xdebug.remote_autostart=1 ;// добавил это чтобы можно было запускать отладку без параметра XDEBUG_SESSION_START
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.mode=develop
xdebug.start_with_request= "yes"
xdebug.client_host = "localhost"
xdebug.client_port = 9003

Перезапустил сервер
Установил плагин на Crome, запустил плагин в режиме debug, открыл страницу http://localhost/test.php?XDEBUG_SESSION_START=code
Брейкпоинт не сработал


На самом деле мне нужно не в браузере вызывать скрипт, а через собственное андроид-приложение, которое будет передавать на сервер данные. Но сначала хотел добиться того, чтобы хотя бы с браузером работала отладка.
 
Последнее редактирование:
PHP:
var_dump($_POST);
уже не помогает, или задача прикрутить отладку к IDE? Если последнее, то не смогу помочь, VS Code только на пощупать стоит, сильно PhpStotrm проигрывает.
 
PHP:
var_dump($_POST);
уже не помогает, или задача прикрутить отладку к IDE? Если последнее, то не смогу помочь, VS Code только на пощупать стоит, сильно PhpStotrm проигрывает.
Хочется полноценной трассировки.
VS Code начал пробовать, погуглив как "самая распространенная IDE для PHP".
Попробую PhpStorrm, может получится.
 
Поставил PhpStorrm, почитал про настройку.
Прописал интерпретатор из "Open Server", высветился xdebug.
Создал скрипт, запустил отладку. Брекпойнт сработал.
Из IDE открыл хром со скриптом, включил debug у плагина. В шторме включил слушатель, обновил страницу в браузере, брекпойнт не отрабатывает (и не высветилось окно подтверждения подключения отладки, как в ютуб-ролике).
 
Поставил PhpStorrm, почитал про настройку
Почитайте гайды из разных источников, достаточно будет настроить один раз, зато потом уже никогда не вернётесь к var_dump();
VS Code начал пробовать, погуглив как "самая распространенная IDE для PHP"
это какой-то сюр
для РНР нет и скорее всего не будет IDE лучше чем PhpStorrm
 
PhpStorrm (+ xdebug) может перехватывать вызов скрипта не из браузера, а просто, по какому-либо порту?
Т.е. из локальной сети идет запрос к http-серверу, его перехватить и трассировать строки скрипта?
 
Грубо говоря xdebug это надстройка над РНР, ему плевать кто там и откуда идёт. У меня 2 варианта xdebug настроены, под докер и для удалённого сервера (с пробросом туннеля). Про остальные я даже не знаю, мне их не надо.
Я уже давно не использую Open Server (хотя по прежнему считаю, что это лучшее решение для windows) и саму Windows.
По настройке xdebug на опен сервере у меня какие-то очень смутные воспоминания. Кажется, что это было в какой-то прошлой жизни.
А вот Eclipse пол года назад настраивал. Но до PhpShtorm ему как до пекина раком.
Может на новогодних праздниках будет время для того что бы вам помочь с настройкой.
 
Последнее редактирование:
Получилось!
Получилось перехватывать запросы из Postman в VSCode.
Изначально в Open Server была включена версия PHP 7.2, с ней шла xdebug 3.
Когда понизил версию PHP до 7.0 (в ней xdebug 2), перехват заработал.
Не знаю почему не работает с 3-й версией xdebug. В ней порт по-умолчанию 9003 вместо 9000. Менял в launch.json на 9003, не помогало.
Всем спасибо!
 
Последнее редактирование:
Сверху