我正在使用Sentry监视网站上的错误。我有一段代码给我带来麻烦,它来自旧的Kohana(PHP框架)模块。
提供此代码(由我编辑):
if ($delete === TRUE)
{
$file_tmp = $file->getRealPath();
clearstatcache(TRUE, $file_tmp);
if (file_exists($file_tmp))
{
return @unlink($file_tmp);
}
return FALSE;
}
如何做到这一点,以免在Sentry上触发此类错误:
Warning: unlink(/var/www/my-hostname-files/application/cache/25/2530cfe0309c86c52f8dda53ca493f4cf72fdbd3.cache): No such file or directory
原始代码只是较大的IF和unlink调用,但似乎在file_exists调用和unlink之间的某个位置,其他一些进程会删除文件?!
谢谢!
答案 0 :(得分:1)
您可以暂时禁用错误报告,而无需强行发出禁止警告。
注意::尝试删除目录时,必须首先递归删除其中的所有文件。
if ($delete === TRUE)
{
$file_tmp = $file->getRealPath();
clearstatcache(TRUE, $file_tmp);
if (file_exists($file_tmp))
{
// store current error reporting level
$level = error_reporting();
// turn completely off
error_reporting(0);
// unlink and store state
$state = unlink($file_tmp);
// restore error reporting level
error_reporting($level);
// return unlink state
return $state;
}
return FALSE;
}