unlink/file_exists 和文件未找到
Posted
技术标签:
【中文标题】unlink/file_exists 和文件未找到【英文标题】:unlink/file_exists and file not found 【发布时间】: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 说的那样,除了抑制警告之外,您可能可以做任何事情。 【参考方案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 想出另一种方法要容易得多。
【讨论】:
以上是关于unlink/file_exists 和文件未找到的主要内容,如果未能解决你的问题,请参考以下文章