取消链接/ file_exists和找不到文件

Céd*_*ard 6 php unlink file-exists

我在我的应用程序中有这个代码,通常由我的应用程序的几个用户在竞争条件下运行

clearstatcache(TRUE, $filepath);
if(file_exists($filepath)) unlink($filepath);
Run Code Online (Sandbox Code Playgroud)

但是,对于这行代码,我每天仍然有几个错误

unlink(file):没有这样的文件或目录

服务器运行Apache 2.2和PHP 5.3.3.我知道种族问题,但认为@操作员只是邪恶.我首先尝试没有任何参数clearstatcache(),具有相同的错误.我怎么能以正确的方式做到这一点?

Hea*_*ota 6

你可以试试这个

if(@unlink($path)) {
  echo "Deleted file "; 
}
else{
  echo "File can't be deleted";
}
Run Code Online (Sandbox Code Playgroud)

我觉得它会很好;


Céd*_*ard 5

正如评论中所述,我的需要是确保我已经删除了文件,而不是知道女巫进程删除它,所以

@unlink($filepath);
clearstatcache(TRUE, $filepath);
if(file_exists($filepath)) throw new Exception('file not deleted : ' . $filepath);
Run Code Online (Sandbox Code Playgroud)

可能是更好的方式.

非常感谢你的帮助,用几句评论来思考另一种方式要容易得多.