Debugging cakephp:理解调试消息并找到错误源

Debugging cakephp:理解调试消息并找到错误源,debugging,cakephp,logging,Debugging,Cakephp,Logging,我得到这样的调试日志 2014-07-22 11:42:17 Notice: Notice (8): Undefined index: pass in [/htdocs/lib/Cake/View/Helper/PaginatorHelper.php, line 111] Trace: PaginatorHelper::beforeRender() - CORE/Cake/View/Helper/PaginatorHelper.php, line 111 ObjectCollection::t

我得到这样的调试日志

2014-07-22 11:42:17 Notice: Notice (8): Undefined index:  pass in [/htdocs/lib/Cake/View/Helper/PaginatorHelper.php, line 111]
Trace:
PaginatorHelper::beforeRender() - CORE/Cake/View/Helper/PaginatorHelper.php, line 111
ObjectCollection::trigger() - CORE/Cake/Utility/ObjectCollection.php, line 130
HelperCollection::trigger() - CORE/Cake/View/HelperCollection.php, line 153
call_user_func - [internal], line ??
CakeEventManager::dispatch() - CORE/Cake/Event/CakeEventManager.php, line 245
View::render() - CORE/Cake/View/View.php, line 462
Controller::render() - CORE/Cake/Controller/Controller.php, line 938
ExceptionRenderer::_outputMessage() - CORE/Cake/Error/ExceptionRenderer.php, line 263
ExceptionRenderer::error400() - CORE/Cake/Error/ExceptionRenderer.php, line 209
ExceptionRenderer::render() - CORE/Cake/Error/ExceptionRenderer.php, line 165
ErrorHandler::handleException() - CORE/Cake/Error/ErrorHandler.php, line 127
[main] - [internal], line ??
我不知道,如何找到这个错误的来源?我该怎么做才能找到答案

错误日志中关于分页器的另一项是:

2014-07-22 12:39:30 Warning: Warning (2): array_merge() [<a href='http://php.net/function.array-merge'>function.array-merge</a>]: Argument #2 is not an array in [/htdocs/lib/Cake/View/Helper/PaginatorHelper.php, line 111]
Trace:
array_merge - [internal], line ??
PaginatorHelper::beforeRender() - CORE/Cake/View/Helper/PaginatorHelper.php, line 111
ObjectCollection::trigger() - CORE/Cake/Utility/ObjectCollection.php, line 130
HelperCollection::trigger() - CORE/Cake/View/HelperCollection.php, line 153
call_user_func - [internal], line ??
CakeEventManager::dispatch() - CORE/Cake/Event/CakeEventManager.php, line 245
View::render() - CORE/Cake/View/View.php, line 462
Controller::render() - CORE/Cake/Controller/Controller.php, line 938
ExceptionRenderer::_outputMessage() - CORE/Cake/Error/ExceptionRenderer.php, line 263
ExceptionRenderer::error400() - CORE/Cake/Error/ExceptionRenderer.php, line 209
ExceptionRenderer::render() - CORE/Cake/Error/ExceptionRenderer.php, line 165
ErrorHandler::handleException() - CORE/Cake/Error/ErrorHandler.php, line 127
[main] - [internal], line ??
有时,人们会在浏览器地址栏中输入最有趣的内容,这会导致日志文件中缺少ControllerException

在这种情况下,最佳做法是什么?忽略并删除此类日志?

检查源 第一步应该是查看源代码,检查代码实际要做什么

$this->options['url'] = array_merge($this->request->params['pass'], $this->request->params['named']);
因此,似乎您已经设法取消设置了
CakeRequest::$params['pass']
,还可能取消设置了
CakeRequest::$params['named']
。默认情况下,它们是空数组,并且在必须使用某些内容填充它们之前一直保持这种状态

也许您正在进行一些奇怪的路由,或者您甚至在代码中的某个地方篡改了
CakeRequest::$params
,或者您遇到了一个bug,谁知道呢,从这里几乎不可能分辨出来

忽略错误? 至于丢失的控制器异常,这当然取决于它的实际原因,这同样是无法从这里分辨的-也许你会显示完整的日志条目,但我们仍然不知道关于你的应用程序内部的任何信息,所以


你必须找出真正的原因,然后你才能决定怎么做。如果只是一个拼写错误的URL,那么您当然可以忽略它,甚至可以删除这些条目,以防您不希望它们扰乱日志,和/或不想等待功能启动。

非常感谢您的回答!更新cake版本并从php5.2升级到5.5后,上述大多数错误日志都消失了-puhh:-)
$this->options['url'] = array_merge($this->request->params['pass'], $this->request->params['named']);