【问题标题】:CakePHP debug set to 0, but it's still debugginCakePHP 调试设置为 0,但仍在调试
【发布时间】:2013-02-15 09:29:05
【问题描述】:

我的蛋糕设置已将调试设置为 0,但它仍在调试到 app/tmp/logs/debug.log。只是为了确保没有发生巫术,我什至打印出 Configure::read('debug') 并吐出 0。有谁知道为什么会发生这种情况?以下是此调试日志的重复日志结果:

2013-02-15 01:25:41 Notice: Strict (2048): Non-static method App::_loadVendor() should not be called statically in [/var/www/website/htdocs/lib/Cake/Core/App.php, line 614]
Trace:
App::_loadVendor() - CORE/Cake/Core/App.php, line 614
App::import() - CORE/Cake/Core/App.php, line 614
include - APP/View/Helper/AdHelper.php, line 3
App::load() - CORE/Cake/Core/App.php, line 497
spl_autoload_call - [internal], line ??
class_exists - [internal], line ??
HelperCollection::load() - CORE/Cake/View/HelperCollection.php, line 75
View::loadHelpers() - CORE/Cake/View/View.php, line 577
View::render() - CORE/Cake/View/View.php, line 359
Controller::render() - CORE/Cake/Controller/Controller.php, line 898
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 114
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 89
[main] - APP/webroot/index.php, line 96

我也在使用 PHP 5.4,并且正在运行 CakePHP 2.3。

谢谢。

【问题讨论】:

  • 调试日志中只有这一行吗?
  • 这不是调试日志中唯一的一行,它大约有 1GB 大小,大约一周前我清除了它。所有条目都类似于这种格式,但并不完全相同。
  • 它们都是“严格”错误吗?严格(2048):
  • 不,但你在做某事。一旦我更改了错误级别 E_ALL & ~E_DEPRECATED & ~E_STRICT,严格的错误就会停止进入调试日志。我仍然不明白为什么将调试日志用作错误日志。我正在减慢消除错误的速度,因此不会经常写入文件。
  • 我的猜测是,没有查看蛋糕代码库,将“级别”设置为 0 会检查松散类型的值并评估为 false,然后为其覆盖 false 或空值并将其默认为达到某个标准水平(大概是 E_ALL)。

标签: php debugging cakephp


【解决方案1】:

确保您完全(对于每个控制器和操作)关闭调试模式。在你的蛋糕core.php 文件中试试这个代码。

Configure::write('Error', array(
    'handler' => 'ErrorHandler::handleError',
    'level' => 0,
    'trace' => false
));

更多详情请查看here

【讨论】:

  • 我用您在此处发布的错误配置替换了我的错误配置,但这并没有阻止调试日志被填满。另外,错误不应该进入错误日志吗?
  • 查看下面的答案 - 默认情况下,通知转到调试而不是错误日志
【解决方案2】:

如果您将 debug 设置为 0,任何对 debug() 或 Debugger::log 的调用都将写入 debug.log(除非您覆盖了默认值)。而当 debug 大于 0 时,对 debug() 的调用将在浏览器中显示为 flash 消息(如果从 Model 或 Controller 调用,则在视图顶部;如果从 View 调用,则在视图顶部)。

您可以在 bootstrap.php 中定义哪种类型的错误进入哪个日志:

App::uses('CakeLog', 'Log');
CakeLog::config('debug', array(
    'engine' => 'FileLog',
    'types' => array('info', 'debug', 'notice'),
    'file' => 'debug',
));
CakeLog::config('error', array(
    'engine' => 'FileLog',
    'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
    'file' => 'error',
));

默认情况下,Cake 将“通知”放在“调试”CakeLog::config 的类型数组中,这意味着通知进入 debug.log。将“通知”复制到“错误”配置的类型数组中,它应该将通知放在 error.log 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多