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

问题描述 投票:0回答:1

我收到这样的调试日志

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 ??

另一个问题:

2014-07-22 12:22:03 Error: [MissingControllerException] Controller class ImgController could not be found.
#0 /htdocs/app/webroot/index.php(99): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#1 {main}

有时,人们在浏览器地址栏中输入最有趣的内容,这会导致日志文件中出现 MissingControllerException。

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

php debugging logging cakephp
1个回答
1
投票

查看来源

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

$this->options['url'] = array_merge($this->request->params['pass'], $this->request->params['named']);

所以看来你已经设法取消设置

CakeRequest::$params['pass']
,也可能取消设置
CakeRequest::$params['named']
。默认情况下,它们是空数组,并且也保持原样,直到必须用某些东西填充它们为止。

也许你正在进行一些奇怪的路由,或者你甚至在代码中的某个地方篡改了

CakeRequest::$params
,或者你偶然发现了一个错误,谁知道呢,从这里几乎不可能分辨出来。

忽略错误?

至于丢失的控制器异常,这当然取决于它实际引起的原因,这又无法从这里看出 - 也许如果您显示完整的日志条目,但话又说回来,我们仍然不知道您的任何信息应用程序内部结构,所以...

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

© www.soinside.com 2019 - 2024. All rights reserved.