【问题标题】:How to trace CakePHP errors using the error.log如何使用 error.log 跟踪 CakePHP 错误
【发布时间】:2013-07-23 17:11:54
【问题描述】:

我有一个正在运行的生产环境,我想知道它发生了哪些错误或问题,而我无法在我的测试环境中重现这些错误或问题。

为此,我正在尝试使用位于 cakephp/app/tmp/ 文件夹中的 error.log,但我无法理解其中的一些错误,甚至不知道它们在代码中的确切位置发生。

例如:

2013-07-24 10:26:49 错误:[MissingActionException] Action TablesController::fancybox() 找不到。

#0 C:\inetpub\wwwroot\lib\Cake\Routing\Dispatcher.php(186): Controller->invokeAction(Object(CakeRequest))

#1 C:\inetpub\wwwroot\lib\Cake\Routing\Dispatcher.php(161): Dispatcher->_invoke(Object(TablesController), Object(CakeRequest), Object(CakeResponse))

#2 C:\inetpub\wwwroot\app\webroot\index.php(92): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse)) #3 C:\inetpub\wwwroot\index.php(42): 要求('C:\inetpub\wwwr...') #4 {主}

错误来自哪里?我应该在哪里调用fancybox() 函数?在哪个文件和行中?我无法用这些迹象追踪它。

有什么方法可以正确阅读吗?我错过了什么吗?

【问题讨论】:

  • 我总是将 url 和引用者添加到我的错误日志中。这样更容易找到问题的根源以及如何重现它以修复它:github.com/dereuromark/tools/blob/master/Lib/Error/…
  • 请用您正在使用的蛋糕版本标记问题
  • 2.2 但我想这种行为在其他版本中也很相似。
  • 用你不使用的蛋糕版本标记你的问题没有帮助。

标签: cakephp cakephp-2.2


【解决方案1】:

错误来自哪里?

错误信息报告TablesController::fancybox() could not be found

这意味着请求了/tables/fancybox/.... 形式的网址。

这很可能是由页面加载的 js 库生成的 404 请求。要识别这些错误 - 只需打开例如chrome 在开发者工具中的网络面板并重新加载页面。任何红色表示请求返回错误的内容 - 以及需要修复的内容。

发出请求的信息也将在 apache 访问/错误日志中 - 引用者是负责发出这些错误请求的发起者。

【讨论】:

  • 我一直在我的所有项目文件中寻找fancybox,但我没有找到任何对具有该名称的控制器的调用。我能找到的只是一个具有该名称的 CSS 类和 jQuery 插件的 JS 初始化。 ($.fancybox({ ...)
  • 如果你适当地标记你的问题,我会给你一些建议;)。 2.3 将 show you exactly what url is responsible - 所以你使用 2.3。
  • 要么从 2.3 向后移植 ErrorHadler,以便您可以在错误日志中查看请求 URL - 或将 function beforeFilter() { if ($this->name === 'CakeError') { $this->log($this->here); $this->log($this->referer()); } 放入应用控制器 - 并确定导致的确切请求 URL错误。基于此 - 采取相应的行动。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-28
  • 2011-10-31
  • 1970-01-01
相关资源
最近更新 更多