我在日志中收到很多警告,例如:
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);
仍然在我的日志中显示是否可以在不更改蛋糕代码的情况下真正抑制它们?
更新:
好的,我再看了一点
这只会在我不处于 Debug模式时发生
这就是错误处理功能fron调试器中的问题
这是:
if (error_reporting() == 0 || $code === 2048 || $code === 8192) {
return;
}
并在正常的生产错误处理中:
if ($code === 2048 || $code === 8192) {
return;
}
所以在生产中它不会检查error_reporting()是否被抑制
最佳答案
诸如此类的错误通常是数据库错误处理不善的结果。假设查询将成功,并且盲目使用..._ query()函数的返回值将导致类似的警告。 mssql_query()
仅在有结果时才返回语句句柄。如果查询成功但没有结果,它将也返回TRUE
,并且在错误时返回FALSE
。
将true/false传递给后面的函数(例如mssql_num_rows()
)将吐出“不是有效的...资源”错误/警告,因为,好吧,它们不是句柄。
换句话说,错误实际上不在警告中指示的行上,而是在脚本中的更早位置,无论查询实际上在何处执行。
关于php - 日志中有很多Cakephp警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3558188/