首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Yosemite时出现Apache localhost 403错误

使用Yosemite时出现Apache localhost 403错误
EN

Stack Overflow用户
提问于 2014-08-12 03:05:04
回答 7查看 71K关注 0票数 47

我刚刚安装了Mac OS X Yosemite fresh。我配置了Apache,并将"users/user/Sites“改为755。当我点击localhost时,我收到一个403 Forbidden "You don't have permission to access / on this server"。同样的事情也发生在我添加到主机文件中的任何其他站点上。

我尝试在的帮助下配置用户目录。这个上的人知道有一个Apache问题,但没有提供太多建议。

我的目录权限如下所示

代码语言:javascript
复制
drwxr-xr-x  29 root             wheel  1054 Aug 11 07:30 /
drwxr-xr-x   6 root             admin   204 Aug 11 07:29 /Users/
drwxr-xr-x+ 26 zachshallbetter  staff   884 Aug 11 11:57 /Users/zachshallbetter/
 0: group:everyone deny delete
drwxr-xr-x   5 zachshallbetter  staff   170 Aug 11 10:16 /Users/zachshallbetter/Sites

有人能提供任何建议或帮助吗?下面是指向我的和文件以及的链接,以供参考。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-10-17 23:01:08

您不希望将整个硬盘驱动器开放给web服务器进程。实际上,httpd.conf的第215-217行说:

代码语言:javascript
复制
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.

Apache2.4(OSX10.10Yosemite)具有与Apache2.2(OSX10.9)不同的Directory directive in Module mod_authz_core结构。

编辑:如果你从一开始就安装Apache,请按照在osx10.10yosemite上安装apache和php。

假设您已经启用了mod_userdir.so,您的问题出在您的用户.conf文件(/etc/apache2/users/username.conf)中,请编辑(或添加)以下内容。

Apache 2.2:

代码语言:javascript
复制
<Directory "/Users/jnovack/Sites/">
  Options Indexes MultiViews
  AllowOverride All
  # OSX 10.9 / Apache 2.2
  Order from deny, allow
</Directory>

Apache 2.4

代码语言:javascript
复制
<Directory "/Users/jnovack/Sites/">
  Options Indexes MultiViews
  AllowOverride All
  # OSX 10.10 / Apache 2.4
  Require all granted
</Directory>
票数 80
EN

Stack Overflow用户

发布于 2014-10-17 19:41:41

编辑文件: /private/etc/apache2/httpd.conf

在第250行(在Yosemite中)上更改:

代码语言:javascript
复制
Options FollowSymLinks Multiviews

至:

代码语言:javascript
复制
Options FollowSymLinks Multiviews Indexes

然后在终端运行中:

代码语言:javascript
复制
sudo apachectl restart
票数 45
EN

Stack Overflow用户

发布于 2015-02-01 06:10:16

这可能是非常晚的答案,但我确实遵循了大多数Stack Overflow解决方案,由于各种原因,它们都没有帮助我。所以我把我的设备重置为新的Yosemite操作系统,让这个本地主机在Mac Yosemite (也有Symlink)上工作。

我所做的步骤如下:

代码语言:javascript
复制
sudo nano /etc/apache2/httpd.conf

取消对以下行的注释:

代码语言:javascript
复制
#LoadModule php5_module libexec/apache2/libphp5.so
to
LoadModule php5_module libexec/apache2/libphp5.so


#LoadModule userdir_module libexec/apache2/mod_userdir.so
to
LoadModule userdir_module libexec/apache2/mod_userdir.so


#Include /private/etc/apache2/extra/httpd-userdir.conf
to
Include /private/etc/apache2/extra/httpd-userdir.conf

保存并退出(Ctrl+X按Enter键,然后按Y键并再次按enter键)

代码语言:javascript
复制
sudo nano /etc/apache2/extra/httpd-userdir.conf

并在第16行取消注释以下行:

代码语言:javascript
复制
#Include /private/etc/apache2/users/*.conf
to
Include /private/etc/apache2/users/*.conf

保存并退出(Ctrl+X按Enter键,然后按Y键并再次按enter键)。

现在转到apache用户文件夹,检查您的配置文件是否存在

代码语言:javascript
复制
cd /etc/apache2/users/

如果此文件夹中没有配置文件,请通过以下方式创建一个

代码语言:javascript
复制
sudo nano /etc/apache2/users/<**YOUR USERNAME**>.conf

<YOUR USERNAME>替换为您的计算机的名称(在终端中键入whoami并输入该名称)。

创建.conf文件后,将以下行复制到该文件中

代码语言:javascript
复制
<Directory "/Users/<YOUR USERNAME>/Sites/">
    AddLanguage en .en
    LanguagePriority en fr de
    ForceLanguagePriority Fallback
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from localhost
     Require all granted
</Directory>

保存并退出

现在重新启动您的apache

代码语言:javascript
复制
sudo apachectl restart

现在转到您的浏览器并输入localhost,它应该可以按预期工作,

只需注意:如果在重新启动计算机后仍无法正常工作

将index.html创建为您应该在此处找到的index.html.en:

代码语言:javascript
复制
open /Library/Webserver/Documents/

右键单击index.html.en并将其复制到index.html,保持原始状态不变

在浏览器中重试,如果成功,则可以删除复制的文件

为了清楚起见,请将原始文件index.html.en留在原处,在整个步骤中保持不变和不受损害。

不知道为什么我必须走这条神秘的弯路--可能是我的机器本地的东西,但如果你在遵循上面的指南后遇到了问题,看看它是否有帮助。

SymLinks

如果您成功了,在浏览器中应该会看到

代码语言:javascript
复制
It works!

现在创建指向任何项目的符号链接。

代码语言:javascript
复制
ln -s <Path_to_your_Project(index_file)> <Path_to_webroot>

例如,如果您的Documents文件夹中有项目文件夹,则通过以下方式将webroot指向索引文件

代码语言:javascript
复制
ln -s /Users/<YOUR USERNAME>/Documents/project/ /Library/Webserver/documents/projectlink 

您可能需要权限才能创建symlink (将上述命令与Sudo一起使用)

将apache配置为跟随符号链接(多亏了tomvon,我没有足够的积分来投票给你)

代码语言:javascript
复制
sudo nano /private/etc/apache2/httpd.conf

在第250行(在Yosemite中)上更改:

代码语言:javascript
复制
Options FollowSymLinks Multiviews

至:

代码语言:javascript
复制
Options FollowSymLinks Multiviews Indexes

然后在终端运行中:

代码语言:javascript
复制
sudo apachectl restart

现在转到localhost/projectlink查看您的项目索引文件是否显示在浏览器上。

快乐的编码..

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25250566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档