无法使用Apache从Centos 7根目录引用的PHP中的scandir()

时间:2018-07-02 19:18:01

标签: php apache centos7 selinux scandir

在阅读了许多有关php scandir()的问题之后,我还没有找到一个能回答我的问题的人。如果重复的话,请在打扰我之前让我知道答案在哪里。

问题:

如果我愿意

var_dump(scandir("/"));

然后我得到系统根文件夹的内容:bin,installs,nvme,var等,等等...

如果我愿意

var_dump(scandir("/nvme"));

然后我得到了错误和错误,表明var / www / public_html / nvme不存在。

那么,如果我这样做

var_dump(scandir("../../../../../../../"));

我可以看到系统根文件夹

但如果我这样做

var_dump(scandir("../../../../../../../nvme"));

然后我收到一个权限被拒绝的错误。

我测试了可以扫描public_html和根目录之间的每个目录,但是当我尝试向前扫描目录时,我遇到了错误。返回路径上的所有目录与我要扫描的nvme目录由同一用户拥有。使用file_get_contents会引发相同的错误。

在SElinux中,我授予apache读写nvme文件夹的权限。我正在启用SElinux的Centos 7上运行。

为什么我不能从其他目录路径上的root用户启动?

编辑:

我的具体错误是我尚未完成SElinux上下文的设置。

以前我曾经跑步      semanage fcontext -a -t httpd_sys_content_t "/nvme(/.*)

但是在那之后我仍然需要跑步      restorecon -v "/nvme"

,以便实际实施新上下文。现在var_dump(scandir("/./nvme"));var_dump(scandir("../../../../../../../nvme"));都可以工作。

0 个答案:

没有答案