gpt4 book ai didi

PHP glob/scandir 和 Linux 软链接(soft link)/权限

转载 作者:行者123 更新时间:2023-12-04 02:08:43 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的在线音乐播放器来改进我的编程。

我有一台运行 CentOS 6.5 的服务器,还有一个包含我所有文件的外部硬盘。我将我的存储分区挂载到 /mnt/storage,我的音乐在 /mnt/storage/cascornelissen/Muziek 中,它具有以下权限:

drwxrwxr-x 19 cascornelissen ftpusers       4096 Nov  4 14:43 Muziek

然后我有一个简单的 httpd 网络服务器,将项目托管在 /var/www/html/melodi 中,其中包含指向前面提到的 Muziek 目录的软链接(soft link):

lrwxrwxrwx 1 root           ftpusers   34 Jan 26 22:31 music -> /mnt/storage/cascornelissen/Muziek

我想使用 PHP 的 glob 列出所有文件,但它返回了一个空数组。所以我尝试了 scandir("music") 但它返回以下错误:

Warning: scandir(music): failed to open dir: Permission denied in /var/www/html/melodi/index.php on line 42

关于如何解决此权限问题有什么想法吗?

最佳答案

试试这个:

chmod ugo+x /mnt /mnt/storage /mnt/storage/cascornelissen

您的路径的某些部分可能不允许您的 Apache 用户进入。允许进入目录意味着向目录添加x执行权限

解释

# create path a/b
mkdir -p a/b
ls a/b # this works

# now remove all permissions for a
chmod 000 a
ls a/b # ls: cannot access a/b: Permission denied
# but why, we should still have permission for b??
# Now, lets add x permission for a:
chmod ugo+x a
ls a/b # works again
ls a # ls: cannot open directory a: Permission denied
# So, we cannot list contents of a, but we can
# access a/b *through* a

所以,execute permission or x 一个directory 意味着我们可以访问它下面的路径,即使我们不能读取其中的内容目录本身。在您的情况下,Apache 需要“遍历” /mnt/storage/cascornelissen 的权限,即使它在到达 Muziek 之前不会读取任何文件>.

关于PHP glob/scandir 和 Linux 软链接(soft link)/权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21369239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com