403 禁止使用 Web 根目录中的符号链接

403 Forbidden on symlink in web root

提问人:Pekka 提问时间:2/8/2010 最后编辑:Pekka 更新时间:3/8/2011 访问量:13261

问:

我在 LAMP 堆栈上的共享主机包上,没有 shell 访问权限。

我可以使用 PHP 的函数创建符号链接。symlink()

假设我的 Web 根目录是/home/www/user1/public

假设我有一个名为/home/www/user1/public/real_dir

我创建了一个名为 pointing to/home/www/user1/public/fake_dirreal_dir

为什么我在尝试访问时会得到 403 禁止访问,但在尝试访问时却没有?www.mydomain.com/fake_dirwww.mydomain.com/real_dir

这不应该是一个权限问题,因为当我在PHP中创建一个文件时,我可以正确地访问它。

我尝试在.htaccess中关闭和打开(它已打开),但没有运气。FollowSymlinks

难道在.htaccess文件中被定义为不可覆盖吗?或者,在 Apache 中使用符号链接时,还有其他需要注意的事项吗?FollowSymlinks

php apache 符号链接

评论


答:

4赞 Sam 2/8/2010 #1

必须将 Apache 配置为允许访问文件系统上的目录。这必须由系统管理员通过在 apache 配置文件 (httpd.conf) 中插入 <Directory> 指令来完成。

由于实际目录位于 Web 根目录内,因此它必须是可访问的,但可能尚未为目录启用 FollowSymLinks - 这也必须添加到 <Directory> 指令中。

查看 http://httpd.apache.org/docs/2.0/mod/core.html#directory

评论

0赞 Pekka 2/8/2010
因此,如果它没有以这种方式配置,并且处于关闭状态,尝试访问符号链接(即使目标也在 Web 根目录中)会引发 403?这是原因吗?FollowSymlinks
0赞 Sam 2/8/2010
对不起,我刚刚重新阅读了您的问题,看到真正的目录在 Web 根目录中,因此可以访问它,但是可能无法启用 FollowSymLinks。我已经更新了我的答案以反映这一点。
0赞 Decent Dabbler 2/8/2010
-1 这仍然不是 OP 问题的答案。OP似乎完全知道这个选择。但是他问是否可以从 httpd.conf 中否决设置它。FollowSymlinks.htaccess
0赞 Sam 2/8/2010
我的回答是,必须使用 httpd.conf 文件中的 <Directory> 指令为目录启用 FollowSymLinks。
0赞 Pekka 2/8/2010
有谁知道一种方法可以在无法访问 apache 配置的情况下判断是否启用了 FollowSymlinks?
0赞 Kenny Kang 3/8/2011 #2

这可能是 SELinux 安全问题。

cat /selinux/强制 如果值为 1,则将其设置为 0,然后重新启动 Apache。

评论

0赞 Nick Radford 8/5/2011
OP 没有 shell 访问权限,如他问题的第一行所述。