我有一个很大的PHP应用程序。在我更改了一些设置后,我得到了一个重定向循环(即浏览器一遍又一遍地重定向到同一页面)。
问题是我不知道此应用程序中哪个命令(哪个PHP文件行)导致重定向。有没有办法跟踪header()
函数的调用?或者 - 甚至更好 - 有没有办法在PHP中跟踪重定向?
提前致谢,
米歇尔
答案 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