1

是否可以避免此异常(可能通过排除由于缺少权限而无法由 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);
4

1 回答 1

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

但不推荐:

于 2018-01-06T17:37:36.723 回答