filemtime"警告统计失败"

Ger*_*ull 21 php regex filemtime

我已经阅读了很多关于它的问题和答案,但我仍然无法解决我的问题......

我正在尝试创建一个函数,删除前一天创建的"xml"或"xsl"扩展名的所有文件.但我在每个文件上收到此警告:

警告:filemtime()[function.filemtime]:第44行/home/u188867248/public_html/ampc/library.php中post_1003463425.xml的stat失败

此目录的所有文件具有相同的结构名称"post_ + randomNum + .xml"(例如:post_1003463425.xml或post_1456463425.xsl).所以我认为这不是编码问题(就像我在其他问题中看到的那样).

我的功能代码是这样的:

 function deleteOldFiles(){
    if ($handle = opendir('./xml')) {
        while (false !== ($file = readdir($handle))) { 

            if(preg_match("/^.*\.(xml|xsl)$/i", $file)){

                $filelastmodified = filemtime($file);

                if ( (time()-$filelastmodified ) > 24*3600){
                    unlink($file);
                }
            }
        }
        closedir($handle); 
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助 :)

小智 29

我认为问题是文件的真实路径.例如,您的脚本正在处理"./",您的文件位于"./xml"目录中.因此,在获得filemtime或取消链接之前,请更好地检查文件是否存在:

  function deleteOldFiles(){
    if ($handle = opendir('./xml')) {
        while (false !== ($file = readdir($handle))) { 

            if(preg_match("/^.*\.(xml|xsl)$/i", $file)){
              $fpath = 'xml/'.$file;
              if (file_exists($fpath)) {
                $filelastmodified = filemtime($fpath);

                if ( (time() - $filelastmodified ) > 24*3600){
                    unlink($fpath);
                }
              }
            }
        }
        closedir($handle); 
    }
  }
Run Code Online (Sandbox Code Playgroud)

  • 甚至在3年以后帮助人们:) (4认同)
  • @ somy -a` $ filelastmodified-time()`应该是`time() - $ filelastmodified`不是吗? (3认同)
  • 即使4年后! (2认同)