PHP符号链接权限被拒绝

时间:2015-07-09 10:11:12

标签: php symlink permission-denied

我知道这个问题很多,但我似乎无法找到错误,为什么我的符号链接有时无效。

我有两个文件夹:

/home/user/domains/example.com/folder1
/home/user/domains/example.com/folder2

这些是他们的权限:

drwx--x--x  9 root   root   4096 May 12 11:15 home
drwx--x--x  7 user   access 4096 Feb  9 10:23 user
drwx--x--x  3 user   user   4096 May  5  2014 domains
drwx--x--x 12 user   user   4096 Jul  7 09:52 example.com
drwxr-xr-x  2 apache apache 4096 Jan 21 09:22 folder1
drwxrwxrwx  4 user   user   4096 Jul  9 10:38 folder2
在PHP中

我创建了两个符号链接:

symlink("/home/user/domains/example.com/folder1","whatever/folder");
symlink("/home/user/domains/example.com/folder2","whatever/folder");

为什么我的符号链接到folder1工作,我的符号链接到文件夹2不?我已经看了几个小时了..

编辑: 好吧,由于我的提供商没有任何帮助,我想尝试不同的解决方案:创建一个符号链接并立即更改其所有者。然而,这给了我一个不允许的操作'错误。有什么想法?

4 个答案:

答案 0 :(得分:2)

假设成功创建了符号链接,当Apache配置为仅在所有者匹配时遵循符号链接时,folder2很可能产生权限错误;您正在寻找此特定配置选项:

SymLinksIfOwnerMatch

您可以通过使用以下选项来减少Apache的严格性:

FollowSymLinks

或者,修复符号链接目标的所有权以使其有效。

答案 1 :(得分:0)

尝试删除两个符号链接然后1)再次尝试PHP,看看它是否仍然存在,2)通过SSH登录并使用ln创建相同的链接,例如

ln -s whatever/folder /home/user/domains/example.com/folder1

如果可行,那么可能是您要链接的文件夹的权限问题,即apache服务器/ PHP无法解决

答案 2 :(得分:0)

whatever/folder是否有足够的权限?

删除folder1和folder2,然后尝试

symlink("/home/user/domains/example.com/folder1.txt","whatever/folder");

答案 3 :(得分:0)

将folder2的用户组从user:user更改为apache:apache

chown -R apache:apache folder2

原因是Apache需要组权限而不是普通用户。