【发布时间】:2018-01-07 01:49:37
【问题描述】:
是否有可能避免此异常(可能通过排除由于缺少权限而无法被 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);
【问题讨论】:
-
我建议不要尝试在 PHP 中解决这个问题,而是找出权限不正确的原因。此外,Flysystem 的目标是为存储提供文件系统抽象。看来您正在尝试做一些只会在本地进行的事情。我建议不要为此使用 Flysystem,它似乎不是该工作的工具。
-
@FrankdeJonge 我明白了,所以你的库是为网络设计的(我们通常可以控制文件权限),而不是像 /proc 这样的目录。对我来说,这就是我的问题的答案。谢谢!
-
/proc 目录已收紧权限,这与 PHP 在某些情况下处理操作的方式相冲突。每个 linux 发行版都有一个像 wheel 或 admin 或 root 这样的组,它拥有这些目录,您大多只能读取它们。但是,某些读取操作(例如列出内容)需要的不仅仅是读取权限。这对于网络和非网络是一样的,尽管在网络情况下您更有可能拥有正确的权限。所以解决的办法就是弄清楚如何为这些操作获取正确的权限。
-
@FrankdeJonge 非常感谢您的澄清!