【问题标题】:unlink/file_exists and file not foundunlink/file_exists 和文件未找到
【发布时间】:2011-07-29 18:30:36
【问题描述】:

我的应用程序中有这段代码,我的应用程序的多个用户经常在竞争条件下运行

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

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

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

服务器运行 Apache 2.2 和 PHP 5.3.3。我知道种族问题,但认为 @ 运算符只是邪恶的。我首先尝试不使用 clearstatcache() 的任何参数,但出现同样的错误。 我怎样才能以正确的方式做到这一点?

【问题讨论】:

  • 能否请您添加一些代码。
  • @experimentX 但它就在那里,不是吗?
  • @Pekka 好吧,我猜上面的代码没有任何缺陷
  • 在这种情况下,@ 运算符可能不会太邪恶等待 cmets 死亡。取决于这段代码的重要性。
  • 就像@John 说的那样,除了抑制警告之外,您可能可以做任何事情。

标签: php file-exists unlink


【解决方案1】:

你可以试试这个

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

我觉得会很好的;

【讨论】:

  • 他在他的问题中说他不想使用这个。不过,这可能是唯一的选择。
【解决方案2】:

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

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

可能是更好的方法。

非常感谢您的帮助,用几个 cmets 想出另一种方法要容易得多。

【讨论】:

    猜你喜欢
    • 2011-05-09
    • 2013-08-29
    • 2012-08-17
    • 2011-02-10
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2016-02-12
    相关资源
    最近更新 更多