是否可以避免此异常(可能是因为缺少权限而排除了PHP进程无法读取的目录?)。我无法在文档中找到它。
RecursiveDirectoryIterator::__construct(/proc/tty/driver):
failed to open dir: Permission denied
我的代码:
$filesystem = new Filesystem(new Local('/proc', LOCK_EX, Local::SKIP_LINKS));
$filesystem->listContents('.', true);
答案 0 :(得分:1)
请参阅:https://github.com/thephpleague/flysystem/issues/831其基本相同的问题。
要执行此解决方法,您需要扩展该类并覆盖方法getRecursiveDirectoryIterator
,因为无法更改RecursiveIteratorIterator
模式。
将默认模式更改为RecursiveIteratorIterator::CATCH_GET_CHILD
,在尝试打开时不会失败。
例如:
<?php
class LocalSkipError extends Local {
protected function getRecursiveDirectoryIterator($path, $mode = RecursiveIteratorIterator::CATCH_GET_CHILD)
{
return new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS),
$mode
);
}
}
$filesystem = new Filesystem(new LocalSkipError('/proc', LOCK_EX, Local::SKIP_LINKS));
$filesystem->listContents('.', true);
但不推荐: