我编辑了整个问题以更好地表示答案。
我有一个for循环,可以访问和编辑图像文件。在循环中,进行了file_exists()检查。如果图像文件不存在,则会创建一个空白文件。
发生的情况是,即使在创建了文件之后,file_exists()也会继续返回false并创建新的空白文件(覆盖以前的操作)。
之所以会发生这种情况,是因为file_exists()和其他一些文件函数会缓存结果。为了防止这种情况发生,请使用clearstatcache();在使用这些函数之前,如果您希望结果已经更改并且正在检查同一个文件!
经过进一步的调查,我发现了一些图像消失的原因:函数file_exists()缓存了结果。
当多次循环浏览相同的文件时,如果不存在要启动的文件,则file_exists()将返回false,并创建一个空白文件。
如果再次使用同一个文件,并且缓存了结果"false",则前一个图像将被销毁,并使用新的空白文件。
为了防止这种情况,我插入了clearstatcache();在循环开始时。这解决了我的问题!
我正在更改问题标题以更好地代表这种情况。