I already read it so many questions and answers about it but I can't still solve my problem...
I'm trying to create a function that deletes all the files with "xml" or "xsl" extension that has been created one day ago. But I'm getting this warning on each file I have:
Warning: filemtime() [function.filemtime]: stat failed for post_1003463425.xml in /home/u188867248/public_html/ampc/library.php on line 44
All the files of this directory have the same structure name "post_ + randomNum + .xml" (example: post_1003463425.xml or post_1456463425.xsl). So I think it's not an encoded problem (like I saw in other questions).
The code of my function is this:
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); } }
Thanks for your help :)
I think the problem is the realpath of the file. For example your script is working on './', your file is inside the directory './xml'. So better check if the file exists or not, before you get filemtime or unlink it:
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); } }
For me the filename involved was appended with a querystring, which this function didn't like.
$path = 'path/to/my/file.js?v=2'
Solution was to chop that off first:
$path = preg_replace('/\?v=[\d]+$/', '', $path); $fileTime = filemtime($path);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With