gpt4 book ai didi

PHP file_exists 对我撒谎(说文件存在但不存在)

转载 作者:行者123 更新时间:2023-12-05 05:28:12 25 4
gpt4 key购买 nike

这样做:

php -r 'unlink("path"); clearstatcache(); echo file_exists("path");'

其中 path 是我的 linux 机器上文件的完整绝对路径。命令返回“1”,即使文件显然不存在。你可以运行这个命令一百万次,它总是会告诉你文件在那里。

运行:

ls path

告诉你没有这样的文件。

什么给了?

更新:我知道 clearstatcache()。这在这种情况下没有帮助。此外,我正在使用 cli 运行它。从运行到运行没有任何变化。我也在运行 ubuntu 11.10 的 64 位虚拟机上。

路径只是文件系统上的一个路径:/var/www/yo.txt。 www 是一个 nfs 共享挂载,不确定是否与它有关。该文件已从远程计算机中删除,但本地计算机似乎知道它不存在。目录上的“ls”显示没有文件,带有路径声明的 ls 表示该文件不存在。该文件只有几 kb,没什么大不了的。

最佳答案

PHP 说的是它知道的真相。罪魁祸首是 NFS 属性缓存。您可以整天调用 clearstatcache,但没有任何效果:由 NFS 负责。

我探索了正在发生的事情 in another SO answer ,但简短的回答是这样的:调整您的 NFS 挂载选项,以便为您提供更快的答案(尝试 noac )或使用 opendir()closedir()使 NFS 缓存无效,然后调用 clearstatcache(),例如:

php -r 'unlink("path"); $d = dirname("path"); opendir($d); closedir($d); clearstatcache(); echo file_exists("path");'

关于PHP file_exists 对我撒谎(说文件存在但不存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13275659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com