【发布时间】:2017-01-19 01:05:07
【问题描述】:
这样做:
php -r 'unlink("path"); clearstatcache(); echo file_exists("path");'
其中 path 是我的 linux 机器上文件的完整绝对路径。即使文件显然不存在,命令也会返回“1”。你可以运行这个命令一百万次,它总是会告诉你文件在那里。
跑步:
ls path
告诉你没有这样的文件。
什么给了?
更新: 我知道 clearstatcache()。在这种情况下,这无济于事。此外,我正在使用 cli 运行它。从运行到运行没有任何变化。我也在运行 ubuntu 11.10 的 64 位 VM 上。
Path 只是文件系统上的一个路径:/var/www/yo.txt。 www 是一个 nfs 共享挂载,不确定是否与它有关。该文件已从远程计算机中删除,但本地计算机似乎知道它不存在。目录上的“ls”不显示任何文件,并且带有路径声明的 ls 表示该文件不存在。文件只有几 kb,没什么大不了的。
【问题讨论】:
-
文档提到了在 32 位系统上较大文件 (>2GB) 的不稳定行为。这可能是您所看到的吗?
-
"what give?" - 阅读手册可能有帮助。 php.net/clearstatcache
-
@hakre,你继续阅读了吗?
unlink()自动清除缓存. -
查看本文档页面的第一条评论 -> php.net/manual/en/function.clearstatcache.php
-
告诉我们更多关于 path 的信息?是本地文件吗?它是如何创建的?它的权限是什么?
标签: php