跟踪重定向循环

时间:2010-04-11 16:01:58

标签: php http redirect

我有一个很大的PHP应用程序。在我更改了一些设置后,我得到了一个重定向循环(即浏览器一遍又一遍地重定向到同一页面)。

问题是我不知道此应用程序中哪个命令(哪个PHP文件行)导致重定向。有没有办法跟踪header()函数的调用?或者 - 甚至更好 - 有没有办法在PHP中跟踪重定向?

提前致谢,
米歇尔

4 个答案:

答案 0 :(得分:2)

您可以使用XDebug及其功能跟踪功能。 http://xdebug.org/docs/execution_trace说:

Xdebug允许您记录所有函数调用,包括参数和以不同格式返回文件。

找到电话后,您可以单步执行代码并逐步执行。你需要一个XDebug的前端,例如netbeans

答案 1 :(得分:1)

如果您的应用程序重定向到相同的URL,则应在重定向之前检查该应用程序,例如:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
if ($targetHost !== $_SERVER['HTTP_HOST'] &&
    $targetPath !== $_SERVER['REQUEST_URI_PATH'] &&
    $targetQuery !== $_SERVER['QUERY_STRING']) {
    // redirect
}

答案 2 :(得分:0)

不是在PHP中,而是在HTTP中。当然是。自带任何HTTP嗅探器,如LiveHTTPHEaders firefox插件,并实时观察所有重定向:)

答案 3 :(得分:0)

您需要做的是覆盖您感兴趣的功能,然后进行回溯以查找文件和行号。

覆盖内置函数:http://php.net/manual/en/function.override-function.php

用于生成回溯:http://php.net/manual/en/function.debug-backtrace.php