PHP 符号链接权限被拒绝
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");
为什么我指向文件夹 1 的符号链接有效,而我指向文件夹 2 的符号链接无效?我已经看了好几个小时了..
编辑:
好吧,由于我的提供者没有任何帮助,我想尝试一个不同的解决方案:创建一个符号链接并立即更改其所有者。然而,这给了我一个 'Operation not permitted' 错误。有什么想法吗?
尝试删除两个符号链接,然后 1) 再次尝试 PHP 并查看它是否仍然存在,以及 2) 通过 SSH 登录并使用 ln 创建相同的链接,例如
ln -s whatever/folder /home/user/domains/example.com/folder1
如果可行,则可能是您链接的来源或链接到的文件夹存在权限问题,apache 服务器/PHP 无法解决
whatever/folder
是否有足够的权限?
删除文件夹 1 和文件夹 2 然后尝试
symlink("/home/user/domains/example.com/folder1.txt","whatever/folder");
将folder2的用户组由user:user更改为apache:apache
chown -R apache:apache folder2
原因是因为 Apache 需要组权限而不是普通用户。
假设符号 link 已成功创建,当 Apache 配置为仅在所有者匹配时遵循符号 link 时,folder2
很可能会产生权限错误;您正在寻找这个特定的配置选项:
SymLinksIfOwnerMatch
您可以使用以下选项来降低 Apache 的刚性:
FollowSymLinks
或者,修复符号 link 目标的所有权以使其工作。
我知道这个问题被问了很多,但我似乎找不到为什么我的符号链接有时不起作用的错误。
我有两个文件夹:
/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");
为什么我指向文件夹 1 的符号链接有效,而我指向文件夹 2 的符号链接无效?我已经看了好几个小时了..
编辑: 好吧,由于我的提供者没有任何帮助,我想尝试一个不同的解决方案:创建一个符号链接并立即更改其所有者。然而,这给了我一个 'Operation not permitted' 错误。有什么想法吗?
尝试删除两个符号链接,然后 1) 再次尝试 PHP 并查看它是否仍然存在,以及 2) 通过 SSH 登录并使用 ln 创建相同的链接,例如
ln -s whatever/folder /home/user/domains/example.com/folder1
如果可行,则可能是您链接的来源或链接到的文件夹存在权限问题,apache 服务器/PHP 无法解决
whatever/folder
是否有足够的权限?
删除文件夹 1 和文件夹 2 然后尝试
symlink("/home/user/domains/example.com/folder1.txt","whatever/folder");
将folder2的用户组由user:user更改为apache:apache
chown -R apache:apache folder2
原因是因为 Apache 需要组权限而不是普通用户。
假设符号 link 已成功创建,当 Apache 配置为仅在所有者匹配时遵循符号 link 时,folder2
很可能会产生权限错误;您正在寻找这个特定的配置选项:
SymLinksIfOwnerMatch
您可以使用以下选项来降低 Apache 的刚性:
FollowSymLinks
或者,修复符号 link 目标的所有权以使其工作。