我正在使用基本的 Apache HTTPd 配置来配置我的开发环境。
但是,为了避免经常出现的问题,我想将我的测试 URL 映射到我的开发文件夹。
我正在使用 Ubuntu。
我的开发路径位于以下示例路径下:
/home/myusername/myworkspace/hptargetpath/src/pages
考虑以下符号链接映射:
#ls -l /opt/share/www/mydevelopmentrootpath:
lrwxrwxrwx 1 root root 77 2011-02-13 18:53 /opt/share/www/mydevelopmentrootpath -> /home/myusername/myworkspace/hptargetpath/src/pages
通过此文件夹映射,我使用以下配置配置了 Apache HTTPd:
<VirtualHost *:*>
ServerName local.server.com
ServerAdmin [email protected]
DirectoryIndex index.html
DocumentRoot /opt/share/www/mydevelopmentrootpath
<Directory /opt/share/www/mydevelopmentrootpath/ >
Options +Indexes
Options +FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
但是,当我想访问该地址下的 index.html 时,我收到了 403 Forbidden 错误http://local.server.com/index.html。
403 Forbidden
You don't have permission to access /index.html on this server.
在 httpd 调试日志中,我检查了以下消息:
[Sun Feb 13 19:34:47 2011] [error] [client 127.0.1.1] Symbolic link not allowed or link target not accessible: /opt/share/www/mydevelopmentrootpath
我认为这个问题是由某些路径权限引起的。它不是对目录的直接权限,而是路径中的某些中间目录。
httpd 核心选项上有一条指令:
SymLinksIfOwnerMatch
The server will only follow symbolic links for which the target file or directory is owned by the same user id as the link.
但经我测试,没有效果。
有人可以帮我吗?我认为这只是开发环境中的一项简单配置。
此致,
过去
答案1
apache 需要所有父目录的“执行”权限/home/myusername/myworkspace/hptargetpath/src/pages
才能跟踪符号链接。您可以使用以下命令授予该权限
chmod o+x /home
chmod o+x /home/myusername
chmod o+x /home/myusername/myworkspace
chmod o+x /home/myusername/myworkspace/hptargetpath
chmod o+x /home/myusername/myworkspace/hptargetpath/src
chmod o+x /home/myusername/myworkspace/hptargetpath/src/pages
在大多数情况下,这是有帮助的。
答案2
我们昨天遇到了类似的问题。我们可以通过将符号链接所有权更改为用户级别来解决它:
chown -h <user>.<group> <symlink>
apache 识别符号链接所有权,如果符号链接所有权不合适,则会引发错误。在 error_log 中,您只能看到“不允许符号链接或链接目标不可访问”。不要忘记 -h 选项,否则您将更改目标所有权。