foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(".")) as $file) {
echo "$file\n";
}
¿Hay alguna manera de que este código no se emita UnexpectedValueException "no se pudo abrir dir: Permiso denegado" cuando hay un subdirectorio ilegible dentro del directorio que intento enumerar?¿Puedo hacer que RecursiveDirectoryIterator omita directorios ilegibles?
ACTUALIZACIÓN
conversión de foreach()
a while()
y una llamada explícita a Iterator::next()
envuelto en try() catch {}
no ayuda. Este código:
$iter = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("."));
while($iter->valid()) {
$file = $iter->current();
echo "$file\n";
try {
$iter->next();
} catch(UnexpectedValueException $e) {
}
};
es un bucle infinito si hay un subdirectorio ilegible.
envolverla en bloques intento de captura. y parece ser una mala idea crear nuevos objetos dentro de paréntesis foreach – s3v3n
Para elaborar sobre el comentario de s3v3n. Parece ser una mala idea, porque lo que está sucediendo es muy difícil de determinar. Un buen código no siempre es el código más pequeño o más rápido. – DampeS8N
No es difícil determinar qué sucede si sabe qué es RecursiveIteratorIterator y RecursiveDirectoryIterator y cuál es su caso de uso común. Es un código simple. –