Отслеживание перенаправления бесконечного цикла в 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), чтобы вы могли следить за выполнением, даже если ваш браузер обнаружил какое-то неправильное представление. Запись во внешний файл дает вам возможность следить за выполнением, даже если вы не видите никакого эха на экране.

Бесконечные перенаправления обычно происходят из-за ненужных сложностей при написании кода и неправильного понимания при формировании структуры проекта.

Удачи!

Другие вопросы по тегам