Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 403禁止在web根目录中的符号链接上使用_Php_Apache_Symlink - Fatal编程技术网

Php 403禁止在web根目录中的符号链接上使用

Php 403禁止在web根目录中的符号链接上使用,php,apache,symlink,Php,Apache,Symlink,我在一个LAMP堆栈上的共享主机包上,没有外壳访问权限 我可以使用PHP的symlink()函数创建符号链接 假设我的web根是/home/www/user1/public 假设我有一个名为/home/www/user1/public/real_dir 我创建了一个名为/home/www/user1/public/fake_dir的符号链接,指向real_dir 为什么我在尝试访问www.mydomain.com/fake_dir时会得到一个403禁止的,而在尝试访问www.mydomain.c

我在一个LAMP堆栈上的共享主机包上,没有外壳访问权限

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

假设我的web根是
/home/www/user1/public

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

我创建了一个名为
/home/www/user1/public/fake_dir
的符号链接,指向
real_dir

为什么我在尝试访问
www.mydomain.com/fake_dir
时会得到一个403禁止的,而在尝试访问
www.mydomain.com/real_dir
时却没有

这不应该是一个权限问题,因为当我用PHP创建一个文件时,我完全可以访问它

我尝试在.htaccess中关闭和打开
FollowSymlinks
(它是打开的),但没有成功


是否
FollowSymlinks
在.htaccess文件中被定义为不可覆盖?或者,在Apache中使用符号链接时,还有什么需要注意的吗?

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

由于实际目录位于web根目录内,因此必须可以访问该目录,但可能尚未为该目录启用FollowSymLinks-这也必须添加到指令中


请参见

这可能是SELinux安全问题

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

因此,如果未按此方式配置,并且
FollowSymlinks
处于关闭状态,则尝试访问符号链接(即使目标也位于web根目录中)将引发403?这就是原因吗?对不起,我刚刚重新阅读了你的问题,发现真正的目录在web根目录中,因此可以访问它,但是可能无法启用FollowSymLinks。我更新了我的答案以反映这一点。-1这仍然不是OP问题的答案。OP似乎完全了解
FollowSymlinks
选项。但是他问是否可以从httpd.conf中否决从
.htaccess
中进行的设置。我的回答是必须使用httpd.conf文件中的指令为目录启用FollowSymLinks。有人知道一种方法来判断FollowSymLinks是否在没有访问apache配置的情况下启用吗?OP没有shell访问权限,如他问题的第一行所述。