【问题标题】:CakePHP debug() isn't working but Debugger::dump() is fineCakePHP debug() 不工作,但 Debugger::dump() 很好
【发布时间】:2013-01-21 07:00:41
【问题描述】:

从 PHP4 和 Cake 1.3 开始,我一直在使用 debug($data); 来调试 CakePHP 中的模型输出等内容。

但是,自从升级到 PHP5.4 后,我注意到debug($data) 似乎并不总是有效。比如今天直接做了$data = $this->Model->find('all');debug($data);的内容好像是空的。没有错误,只是在 HTML 输出中引用了我调用调试和行号的事实,然后没有调试输出。

但是,如果我在完全相同的 find 上运行 Debugger::dump($data);,它会起作用 find 并且我会看到整个输出。

这似乎只发生在$data 有大量数据(比如 100 多条记录)时,但我在 PHP5.4 之前使用过这种大小的数据集,从来没有问题,也没有错误,内联或在 apache/php 日志中表明存在任何内存问题,并且我已将调试设置为 3。

有人知道这是为什么吗?我可以很容易地开始使用Debugger::dump($data);,但每次都需要尝试一下,我想知道为什么我不能再使用deubg();

【问题讨论】:

  • 我有时会看到某些记录的奇怪编码(通常不是 utf8)会发生这种情况。然后 debug() 输出为空,而 vardump() 和其他工作正常。也许这里也是如此?
  • 啊,是的,你是对的。 PHP 升级只是一个巧合。发生这种情况的真正原因是由于数组中存在新添加的 UTF 数据。谢谢!随意添加此作为答案,我会将其标记为正确。

标签: cakephp


【解决方案1】:

这可能发生在您的数据库记录中的非 utf8 编码数据 - 如果您的应用程序的其余部分是 UTF-8 的话。 debug() 然后将只输出“无”。不过,var_dump()print_r() 和其他 php 内部方法仍应打印输出。

您通常可以使用 iconv() 等将它们重新编码为 utf8。

【讨论】:

    猜你喜欢
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多