【问题标题】:Lots of cakephp warnings in the log日志中有很多 cakephp 警告
【发布时间】:2011-04-03 06:12:47
【问题描述】:

我的日志中有很多警告,例如: 2010-08-24 09:34:01 警告:警告 (2):mssql_num_rows():提供的参数不是 [C:\xampp\htdocs\cake\libs\model\datasources\dbo 中的有效 MS SQL 结果资源\dbo_mssql.php,第 468 行] 2010-08-24 09:34:01 警告:警告 (2):mssql_free_result():提供的参数不是 [C:\xampp\htdocs\cake\libs\model\datasources\dbo 中的有效 MS SQL 结果资源\dbo_mssql.php,第 180 行] 2010-08-24 09:34:01 警告:警告 (2):mssql_free_result():提供的参数不是 [C:\xampp\htdocs\cake\libs\model\datasources\dbo 中的有效 MS SQL 结果资源\dbo_mssql.php,第 180 行]

这些警告只是超出了我的日志文件,使它们几乎毫无用处。 我查看了这些行,他们使用@符号来抑制这些错误,例如: @mssql_free_result($this->results);

并且仍然显示在我的日志中是否可以在不更改蛋糕代码的情况下真正抑制它们?

更新:

好的,我对此进行了更多研究 这只发生在我不处于调试模式时

这是因为调试器的错误处理功能 这是:

if (error_reporting() == 0 || $code === 2048 || $code === 8192) {
    return;

}

并且在正常的生产错误处理中:

if ($code === 2048 || $code === 8192) {
    return;

}

所以在生产中它不会检查 error_reporting() 是否被抑制

【问题讨论】:

  • 听起来你有一些你应该忽略的消息。
  • 如果这显然是一个可重现的问题,您可能应该在 cakephp.lighthouseapp.com 开一张票

标签: php cakephp error-handling


【解决方案1】:

这样的错误通常是由于数据库错误处理不当造成的。假设查询会成功并且盲目地使用 ..._query() 函数的返回值会导致类似的警告。 mssql_query() 仅在有结果时才返回语句句柄。如果查询成功但没有结果,它也会返回TRUE,如果出错则返回FALSE

将 true/false 传递给后面的函数(例如 mssql_num_rows())会吐出“不是有效的……资源”错误/警告,因为,嗯……它们不是句柄。

换句话说,错误并不真正出现在警告中指示的行中,而是在脚本中的较早位置,即实际执行查询的位置。

【讨论】:

    猜你喜欢
    • 2013-02-25
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多