我试图设置一个别名来指向我的文件系统上不是在DocumentRoot中的某个目录。 现在我得到一个403禁止回应。 这些是采取的步骤: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.在terminal中用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是正确的,但我有更多的细节补充。
我们都试图为一个用户的home文件夹下的一个文件夹配置一个虚拟目录; 我想这就是为什么我们有这个问题。 在我的情况下,我有以下的设置:
/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/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中更正Alias,Directory Entry,并修改/ usr / grp)。
请记住:如果你把你的网站放在用户空间,apache用户(运行httpd)需要访问你的家!
在/Users/user/Documents/
, /Users/user/
上检查权限(首先强制执行更高级别的权限…)
/bin/su
到运行Apache的用户(如www,www-data),并在/Users/user/Documents/example
目录中创建一个文件。 这可能会指出您的设置的权限问题。
这些都是非常好的答案。 他们都没有为我工作。
我在OSX服务器中指定了一个指向用户目录的别名。 我花了很长一段时间chmodding和_www用户搞乱,递归地添加可执行权限,卸载macports和各种东西试图让这个工作。 我试过777.不行。 不知道为什么它不工作。
最后, 我只是在Finder的那个文件夹中检查了“共享文件夹”复选框 ,它在指定的域上以php active的方式工作,这是我想要的。 :/ …这很容易。
我只是有这个完全相同的问题。 我发现SE_Linux已启用,并且我Aliased目录中的文件的安全上下文不正确,缺少httpd_sys_content_t。
您可以使用ls -Z
查看安全上下文。 如果你的文件/文件夹没有httpd_sys_content_t,那么Apache不会服务器! 你可以添加正确的上下文,像chcon -R --type=httpd_sys_content_t /new_html_directory
。 这将改变目录中当前文件的上下文,但不会改变之后添加的任何文件(为此你需要使用semanage)。 您的其他选择是将文件保留在/ var / www下。
经过大量的时间浪费我解决了这个问题,我想分享,以节省您的时间。
上面和其他帖子中的所有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
希望这会有所帮助
这是为我修复的:
在/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:如果你打算升级到优胜美地,预算你自己一个星期来解决所有的问题)。
奇怪的是,我已经得到了Apache 2.4的工作,突然又破了…
PSA:如果你打算升级到优胜美地,那么花一个星期来解决所有的问题
这看起来确实是正确的,做一个健全的检查。
你重新启动apache
检查组和用户的所有权
我认为报价可以删除
/ Users / user / Documents / example中有一些东西?
尝试777
-Sean
SELinux是我的罪魁祸首。 如果你在linux上有这个问题,你的别名和文件权限是正确的,比试着用setenforce 0来把SELinux放到permissive模式。 那为我做了诡计。
我不得不恢复我的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 {} \;