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)