Php 文件\u放置\u内容创建新文件

Php 文件\u放置\u内容创建新文件,php,caching,file-put-contents,Php,Caching,File Put Contents,我的下面的脚本在缓存文件已经存在时工作,但不会创建初始的第一个缓存文件本身 有人能帮我吗? 文件夹权限正常 <?php $cache_file = 'cachemenu/content.cache'; if(file_exists($cache_file)) { if(time() - filemtime($cache_file) > 86400) { ob_start(); include 'includes/menu.php'; $buffer

我的下面的脚本在缓存文件已经存在时工作,但不会创建初始的第一个缓存文件本身

有人能帮我吗?
文件夹权限正常

<?php 
$cache_file = 'cachemenu/content.cache';

if(file_exists($cache_file)) {
  if(time() - filemtime($cache_file) > 86400) {

    ob_start();
    include 'includes/menu.php';
    $buffer = ob_get_flush();
    file_put_contents($cache_file, $buffer);

  } 

  else include 'cachemenu/content.cache';

}

?>

只有当文件存在并且是旧文件时,才向该文件写入。您应该更改
if
,使其在不存在时写入

<?php 
$cache_file = 'cachemenu/content.cache';

if(!file_exists($cache_file) || time() - filemtime($cache_file) > 86400) {

    ob_start();
    include 'includes/menu.php';
    $buffer = ob_get_flush();
    file_put_contents($cache_file, $buffer); 
} else {
    include 'cachemenu/content.cache';
}

?>

您的条件是告诉PHP“如果文件不存在,则包括该文件”

这就是为什么脚本从一开始就不会创建缓存文件,因为在每次脚本加载(包括第一次加载)时,您的条件状态都是“如果没有文件,请包含该文件”

您需要设置条件“文件不存在”,如:


这是为什么?这是一个不同类型的问题,感谢巴尔马的工作。在stackoverflow学习了很多。
if(!file_exists($cache_file)) {

  // File does not exist - create the file

} else {  

  // File does exist - show the file (include)

}