【发布时间】:2013-01-04 21:37:31
【问题描述】:
当 tmp 目录已满时,file_put_contents 返回 FALSE,但创建的文件大小为 0。file_put_contents 应该完成文件的创建,或者根本没有任何效果。例如:
$data = 'somedata';
$temp_name = '/tmp/myfile';
if (file_put_contents($temp_name, $data) === FALSE) {
// the message print that the file could not be created.
print 'The file could not be created.';
}
但是当我进入 tmp 目录时,我可以找到在该目录中创建的大小为 0 的文件“myfile”。这使得它难以维护。不应创建该文件,我希望看到一条消息或警告 tmp 目录已满。我错过了什么吗?这是正常的行为吗?
【问题讨论】:
-
不是它的工作原理。您显然可以检测到故障。也许只是删除文件并发出警告?
-
这个想法是 file_put_contents 不是原子的。要么完成工作,要么没有效果。
-
我现在更了解您来自哪里。写入模式(标志)是否完全考虑在内,还是在所有模式中都会发生这种情况?我认为this 可能是相关的:“此函数与依次调用 fopen()、fwrite() 和 fclose() 以将数据写入文件相同。”
-
我在 php 网站上提交了一个错误。见bugs.php.net/bug.php?id=63908
标签: php temporary-files