modificacion filectime fecha failed archivo php regex filemtime

filectime - php filemtime(): stat failed



filemtime "aviso de error para" (2)

Ya lo leí tantas preguntas y respuestas, pero todavía no puedo resolver mi problema ...

Estoy tratando de crear una función que elimine todos los archivos con la extensión "xml" o "xsl" que se creó hace un día. Pero estoy recibiendo esta advertencia en cada archivo que tengo:

Advertencia: filemtime () [function.filemtime]: error de estadística para post_1003463425.xml en /home/u188867248/public_html/ampc/library.php en la línea 44

Todos los archivos de este directorio tienen el mismo nombre de estructura "post_ + randomNum + .xml" (ejemplo: post_1003463425.xml o post_1456463425.xsl). Así que creo que no es un problema codificado (como vi en otras preguntas).

El código de mi función es este:

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); } }

Gracias por tu ayuda :)


Creo que el problema es la ruta real del archivo. Por ejemplo, su script está trabajando en ''./'', su archivo está dentro del directorio ''./xml''. Así que mejor comprueba si el archivo existe o no, antes de obtener filemtime o desvincularlo:

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); } }


Para mí, el nombre del archivo involucrado se adjuntó con una cadena de consulta, que a esta función no le gustó.

$path = ''path/to/my/file.js?v=2''

La solución fue cortar eso primero

$path = preg_replace(''//?v=[/d]+$/'', '''', $path); $fileTime = filemtime($path);