[英]Fixing 403 Forbidden on alias directory with Apache
我正在尝试设置别名以指向我的文件系统上的某个目录而不是DocumentRoot。 现在我收到403 Forbidden回复。 以下是采取的步骤:1。编辑http.conf,添加:
Alias /example "/Users/user/Documents/example"
然后...
<Directory "/Users/user/Documents/example">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all</Directory>
2.在终端中使用chmod设置权限:
chmod 755 /Users/user/Documents/example
现在它应该工作? 相反,我获得禁止访问。 这是error_log的输出:
[Sun Jul 24 06:57:57 2011] [error] [client xx.xx.xx.xx] (13)Permission denied: access to /example denied
我也在OS X上遇到过这个问题。 事实证明gliptak是正确的,但我还有一些细节需要补充。
我们都试图为用户主文件夹下的文件夹配置虚拟目录; 我想这就是我们遇到问题的原因。 就我而言,我有以下设置:
/Users/calrion
。 /Users/calrion/Path/to/www
。 /Volumes/Other/Users/calrion/Path
的符号链接/Users/calrion/Path
/Volumes/Other/Users/calrion/Path
。 问题是用户和组_www
(Apache在OS X上运行)缺少对/Users/calrion
和/Volumes/Other/Users/calrion
执行访问权限。
运行chmod o+x /Users/calrion
和chmod o+x /Volumes/Other/Users/calrion
解决了问题(在OS X chmod o+x /Volumes/Other/Users/calrion
上)。
这里的规则是Apache需要对路径中的所有文件夹执行访问才能提供文件。 没有这个,你将获得HTTP 403(禁止)。
最后一根稻草;)目录条目中必需的本地...
喜欢
<Directory "/Users/user/Documents/example">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require local
Order allow,deny
Allow from all
</Directory>
如果其他一切都不起作用(正确的别名,httpd.conf中的目录条目和正确的mod / usr / grp)。
请记住:如果您将站点放在用户空间中,则apache用户(运行httpd)需要访问您的家!
这些都是非常好的答案。 他们都没有为我工作。
我在OSX服务器中指定了一个指向用户目录的别名。 我花了很长时间chmodding并弄乱了_www用户,递归地添加了可执行权限,卸载了macports以及各种尝试使其工作的东西。 我试过777.不。 不知道为什么它不起作用。
最后, 我刚刚在Finder中检查了该文件夹中的“共享文件夹”复选框 ,并且它在指定的域上工作,使用php激活,就像我想要的那样。 :/ ...这很容易。
检查/Users/user/Documents/
, /Users/user/
权限(首先强制执行更高级别的权限...)
/bin/su
进入运行Apache的用户(如www,www-data)和cat
/Users/user/Documents/example
目录下的文件。 这可能会指向您的设置权限问题。
我只是遇到了同样的问题。 我发现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下。
以下是为我修复它的原因:
在/etc/apache2/httpd.conf
<Directory />
Options FollowSymLinks
AllowOverride None
# REMOVE THESE LINES
#Order deny,allow
#Deny from all
# ADD THIS LINE
Require all denied
</Directory>
此更改实现了apache更新中从2.2到2.4的更改。 OSX Yosemite更新带来了apache更新(PSA:如果你打算升级到Yosemite,请自己预算一周来解决它所破坏的一切)。
奇怪的是,我已经让apache 2.4工作了,然后突然再次破坏....
PSA:如果你打算升级到优胜美地,那么就要花一周的时间来解决它所破坏的一切
经过大量的时间浪费我修复了问题,我想分享以节省您的时间。
上面和其他帖子上的所有gentelmen在他们的答案中都有一些正确的部分,但下面是总和
在“/etc/apache2/httpd.conf”文件中:
1-更改您的文档根目录
Original: DocumentRoot "/Library/WebServer/Documents"
Change to: DocumentRoot "/Users/yourname/www"
2-改变
原版的:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
改成:
<Directory /Users/yourname/www>
Options FollowSymLinks Includes ExecCGI
AllowOverride None
Order deny,allow
Deny from all
</Directory>
3-变化:
原版的:
<Directory "/Library/WebServer/Documents">
改成:
<Directory "/Users/yourname/www">
4-最后,如果您是超级用户,则可能不需要此步骤,这是在新的根文件夹上设置正确的权限
chmod 755 /Users/yourname/www
希望这会有所帮助
我不得不还原我的apache配置文件,然后再次设置服务器。 发现这很有用: https : //apple.stackexchange.com/questions/41143/how-to-revert-default-mac-apache-install-to-original
快速解决方案
在Linux上以root身份使用这些命令:
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;
它确实看起来正确,做一个健全检查。
你重新启动了apache
检查组和用户所有权
我认为报价可以删除
/ Users / user / Documents / example中有什么内容?
试试777
-Sean
SELinux是我的罪魁祸首。 如果你在Linux机箱上遇到这个问题而你的别名和文件权限是正确的,那么尝试执行“setenforce 0”将SELinux置于许可模式。 这对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.