Отслеживание перенаправления бесконечного цикла в apache
У меня есть PHP-скрипт, вызывающий бесконечный цикл перенаправления, и я не знаю, как его обнаружить. Есть ли способ обнаружить это? Могу ли я добавить любую команду в мой.htaccess, чтобы записать перенаправления в журнал?
заранее спасибо,
3 ответа
Простая отладка в PHP - это громоздкая попытка. Что вам понадобится, так это то, что вы должны предоставить какой-нибудь оператор "echo" (вывод фиктивного текста) после каждой строки, за которым следует оператор "exit".
Тогда цикл перенаправления не будет работать, потому что "выход" делает остановку счетчика программы, и теперь вы можете последовательно отлаживать, где вы идете не так.
Что касается команды ".htaccess", вам не понадобится такая вещь. Пожалуйста, проверьте в своей корневой папке файл "error.log", где вы разместили файл index.php вашего сайта. Если вы откроете этот файл в каком-либо текстовом редакторе (например, Wordpad), вы увидите весь список ошибок, а также дату и время.
РЕДАКТИРОВАТЬ (предоставляя один пример):-
Допустим, у вас есть одна страница, подобная следующей:
<?php
session_start();
include_once("includes/header.php");
$var1 = 'blah blah';
// some code
$var2 = 'some more blah blah';
// some code again
// may be some more code
include_once("includes/footer.php");
?>
Теперь измените код для отладки следующим образом:
<?php
session_start();
echo 'test 1';
exit;
// other code of yours comes after this line
?>
Если это работает, измените снова на:-
<?php
session_start();
include_once("includes/header.php");
echo 'test 2';
exit;
// other code of yours comes after this line
?>
Теперь, если это работает, это означает, что у вас нет проблем в файле "header.php", в противном случае у вас возникнут некоторые проблемы в этом включенном файле, и вам нужно будет начать отладку таким же образом в этом файле "header.php".
Надеюсь, поможет.
Изменить экземпляры
header ("Location: foo.php");
в
//header ("Location: foo.php");
echo "redirecting to foo.php on line ## of bar.php";
exit;
(Скорее всего, foo = bar, но у вас может быть цикл, содержащий более одной страницы...)
В настоящее время я борюсь с бесконечным перенаправлением самостоятельно. Из-за сложности цикла программирования приложений и дополнительного времени не все перенаправления были сделаны правильно.
Если вы установили сессию в начале (скажем, файл автозагрузчика), вы не можете просто проверить, зацикливается ли сессия.
Мой совет заключается в том, что вы пишете перенаправление переменных во внешний файл (например, с помощью file_put_contents или fwrite), чтобы вы могли следить за выполнением, даже если ваш браузер обнаружил какое-то неправильное представление. Запись во внешний файл дает вам возможность следить за выполнением, даже если вы не видите никакого эха на экране.
Бесконечные перенаправления обычно происходят из-за ненужных сложностей при написании кода и неправильного понимания при формировании структуры проекта.
Удачи!