foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(".")) as $file) {
echo "$file\n";
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让这个代码不会抛出UnexpectedValueException"无法打开dir:权限被拒绝"只要目录中有一个不可读的子目录我试图列出?
UPDATE
转换foreach()为while()显式调用Iterator::next()包装try() catch {} 并没有帮助.这段代码:
$iter = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("."));
while($iter->valid()) {
$file = $iter->current();
echo "$file\n";
try {
$iter->next();
} catch(UnexpectedValueException $e) {
}
};
Run Code Online (Sandbox Code Playgroud)
如果存在不可读的子目录,则是无限循环.