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