使用Apache在别名目录上修复403 Forbidden

sjk*_*ing 30 apache permissions macos alias operating-system

我正在尝试设置别名以指向我的文件系统上的某个目录而不是DocumentRoot.现在我收到403 Forbidden回复.以下是采取的步骤:1.编辑http.conf,添加:

Alias /example "/Users/user/Documents/example"
Run Code Online (Sandbox Code Playgroud)

然后...

<Directory "/Users/user/Documents/example">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   Allow from all</Directory>
Run Code Online (Sandbox Code Playgroud)

2.在终端中使用chmod设置权限:

chmod 755 /Users/user/Documents/example
Run Code Online (Sandbox Code Playgroud)

现在它应该工作?相反,我获得禁止访问.这是error_log的输出:

[Sun Jul 24 06:57:57 2011] [error] [client xx.xx.xx.xx] (13)Permission denied: access to /example denied
Run Code Online (Sandbox Code Playgroud)

Cal*_*ion 26

我也在OS X上遇到过这个问题.事实证明gliptak是正确的,但我还有一些细节需要补充.

我们都试图为用户主文件夹下的文件夹配置虚拟目录; 我想这就是我们遇到问题的原因.就我而言,我有以下设置:

  • 家庭文件夹是/Users/calrion.
  • 虚拟目录文件夹是/Users/calrion/Path/to/www.
  • 有一个/Users/calrion/Path指向的符号链接/Volumes/Other/Users/calrion/Path.

问题是用户和组_www(Apache在OS X上运行)缺少对/Users/calrion和的执行访问权限/Volumes/Other/Users/calrion.

运行chmod o+x /Users/calrionchmod o+x /Volumes/Other/Users/calrion解决问题(在OS X 10.7.4上).

这里的规则是Apache需要对路径中的所有文件夹执行访问才能提供文件.没有这个,你将获得HTTP 403(禁止).

  • 这个解决方案有帮 (2认同)

Mir*_*ann 13

最后一根稻草;)目录条目中必需的本地...

喜欢

<Directory "/Users/user/Documents/example">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Require local
   Order allow,deny
   Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

如果其他一切都不起作用(正确的别名,httpd.conf中的目录条目和正确的mod/usr/grp).

请记住:如果您将站点放在用户空间中,则apache用户(运行httpd)需要访问您的家!


gli*_*tak 10

检查权限/Users/user/Documents/,/Users/user/(首先执行更高级别的权限...)

/bin/su进入运行Apache的用户(如www,www-data)和cat目录中的/Users/user/Documents/example文件.这可能会指向您的设置权限问题.


小智 10

这些都是非常好的答案.他们都没有为我工作.

我在OSX服务器中指定了一个指向用户目录的别名.我花了很长时间chmodding并弄乱了_www用户,递归地添加了可执行权限,卸载了macports以及各种尝试使其工作的东西.我试过777.不.不知道为什么它不起作用.

最后,我刚刚在Finder中检查了该文件夹中的"共享文件夹"复选框,并且它在指定的域上工作,使用php激活,就像我想要的那样.:/ ...这很容易.


sud*_*dol 6

我只是遇到了同样的问题.我发现SE_Linux已启用,并且我的别名目录中的文件的安全上下文不正确,缺少httpd_sys_content_t.

您可以使用查看安全上下文ls -Z.如果您的文件/文件夹没有httpd_sys_content_t,那么apache将不会为它们提供服务!您可以添加适当的上下文chcon -R --type=httpd_sys_content_t /new_html_directory.这将更改当前目录中文件的上下文,但不会更改之后添加的任何文件(为此您需要使用semanage).您的另一个选择是将文件保留在/ var/www下.

  • 对于ls没有-Z选项,我在BSD Mac OS中.我刚刚使用/ Library/WebServer/Documents目录,我假设它与linux下的/ var/www相同.当我有时间时,我将开始全新安装,可能是从源代码构建apache. (2认同)