如果写入文件失败,会发生什么?

时间:2012-12-05 11:53:30

标签: php file-processing

文件是否仍能正确显示其先前的内容?

1)使用file_put_contents func

发生错误时

2)使用copy func

发生错误时

我问,因为我想实现半动态页面,我想知道此过程中的错误是否会导致网页出现问题?

1 个答案:

答案 0 :(得分:1)

如果您正在执行file_put_contents("index.html")之类的简单操作,可能会出现多个问题:

  • 如果写入失败,则会留下不需要的HTML或空白页面;
  • 如果服务器繁忙,访问者可以在PHP进程写入文件时看到空白页面或部分内容。

您应该做的是使用临时文件:

if (false !== file_put_contents("index.html.tmp", $data)) {
   rename("index.html.tmp", "index.html");
}

使用临时文件并重命名将避免上述两个问题。适用于各种文件类型和用例。如果重命名失败,您仍将拥有旧版本。这很好,因为即使无法执行所有文件操作,它也不会削弱您的网站。

要添加安全性,请将tmp文件写入Web浏览器无法访问的路径。