Я сейчас занимаюсь доработкой самописной CMS (автор не я), состоящей из нескольких сотен PHP файлов. В коде обильно встречаются конструкции вида "header('Location:....)", причём как в PHP, так и в JS-коде. При определённых условиях сайт начинает вызывать циклическую перезагрузку страницы (HTTP 302), после чего браузер прибивает страничку. Отладить вручную не удалось, а так как у меня мало опыта работы с дебаггерами, то быстро найти решение не могу. Подскажите, как решить проблему с помощью Xdebug или подобных инструментов?
я это всё делал. проблема в том, что хидер локейшенов в коде как минимум несколько десятков, cms написана очень криво, т.е. код, отвечающий за конкретный релокейшен может быть где угодно, но не там, где его ожидаешь и где он должен быть.
Как вариант пройтись поисковиком IDE по всем header("Location... ) и расставить breakpoint'ы перед header или на сами header.
В phpstorm делается так: открываем в ide через File > Open directory папку где лежат все исходники проекта слева жмем правой кнопкой мыши на названии верхней папки и выбираем Find in Path там пишем для поиска header. Ещё нужно будет правильно указать search in directory если что то неправильно, у меня само все вышло правильно. Выйдет окошко Found occurances т.е. найденные совпадения и там можно быстренько даблкликом и ctrl+F8 обойти каждое совпадение и поставить breakpoint на сам header или на какой нибудь вызов какой нибудь функции перед header.
Таким же образом если есть подозрение на javascript или другие причины, то можно попробовать закомментировать через поисковик все места с header для этого надо выбрать вместо Find in Path - Replace in Path в строке для поиска написать header("Location , а в строке для замены //header("Location и нажать Find потом All files. Потом можно так же обратно раскомментировать. Таким образом можно разом закомментировать все header во всех файлах во всех папках которые находятся в папке которую вы открыли через File > Open directory.
C дебагером все не так сложно как кажется - главное один раз настроить потом можно ставить столько breakpoint'ов сколько хочется и наслаждаться тем что можно без всяких <? есно $myVariable ?> посмотреть значения переменных.
обильно встречаются конструкции вида "header('Location:....)"
мало опыта работы с дебаггерами
вы не тем делом заняты. CMS пишут только новички, чтобы подучиться писаь код, или про чуваки, которые знаю как и что делать. на про вы не похожи.
а по делу.
xdebuger очень удобная штука, без нее как без рук. как люди без нее живут не представляю. и в двух словах описать как с ним работать не представляется возможным. можете поизучать статьи, например вот habrahabr.ru/post/209024
@dr1v3 можете харкануть автору такой цмс в лицо. цмс состоящая из более сотни файлов это как минимум мусорка, как максимум говно еще то. щас все строится на mvc что подразумевается что повторяемость кода будет меньше.