unlink/file_exists and file not found

北城以北 提交于 2019-12-09 17:50:50

问题


I have this code in my application, often run in race condition by severals users of my application

clearstatcache(TRUE, $filepath);
if(file_exists($filepath)) unlink($filepath);

But, for this line of code, I still have severals errors each day like

unlink(file): No such file or directory

Server run Apache 2.2 and PHP 5.3.3. I know race problem, but think @ operator is just evil. I have first tried without any parameter for clearstatcache(), with the same error. How can I do it the correct way?


回答1:


you can try this

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

I think it will be pretty fine;




回答2:


As said in comment, my need is to be sure I have deleted the file, not to know witch process delete it, so

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

may be a better way.

Thanks a lot for your help, it's so much easier to think another way to do it with severals comments.



来源:https://stackoverflow.com/questions/5548986/unlink-file-exists-and-file-not-found

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!