отслеживание перенаправления бесконечного цикла в apache - PullRequest
1 голос
/ 03 июля 2010

У меня есть скрипт PHP, вызывающий бесконечный цикл перенаправления, и я не знаю, как его обнаружить. Есть ли способ обнаружить это? Могу ли я добавить любую команду в мой .htaccess для записи перенаправлений в журнал?

спасибо заранее,

Ответы [ 3 ]

1 голос
/ 03 июля 2010

Отладка в PHP простым способом на самом деле является громоздкой задачей.Что вам понадобится, так это то, что вы должны предоставить какой-то оператор " echo " (вывод фиктивного текста) после каждой строки, за которым следует оператор команды " exit ".

Тогда цикл перенаправления не будет работать, потому что «выход» делает счетчик программ остановленным, и o теперь вы можете последовательно отлаживать, где вы идете не так.

Что касается команды ".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".

Надеюсь, это поможет.

0 голосов
/ 14 марта 2014

В настоящее время я сам борюсь с бесконечным перенаправлением.Из-за сложности цикла программирования приложений и дополнительного времени не все перенаправления были выполнены правильно.

Если вы установили сессию в начале (скажем, файл автозагрузчика), вы не можете просто проверить, зацикливается ли сессия.

Мой совет заключается в том, что вы пишете перенаправление переменных во внешний файл (например, с помощью file_put_contents или fwrite), чтобы вы могли следить за выполнением, даже если ваш браузер обнаружил какое-то неправильное представление.Запись во внешний файл дает вам возможность следить за выполнением, даже если вы не видите никакого эха на экране.

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

Удачи!

0 голосов
/ 03 июля 2010

Изменить экземпляры с

header ("Location: foo.php");

на

//header ("Location: foo.php");
echo "redirecting to foo.php on line ## of bar.php"; 
exit;

(Скорее всего, foo = bar, но вы могли бы иметь цикл, содержащий несколько страниц...)

...