Mac OS X升级到优胜美地后,apache客户端被服务器配置拒绝


12

我知道这看起来与其他问题相似,但是优胜美地似乎在升级后的Apache配置中有所更改。我的错误日志显示“客户端被服务器配置拒绝:/Users/douglas/Sites/testpatient.php”

Apache版本:MacBook-Pro:apache2 douglas $ apachectl -v服务器版本:Apache / 2.4.9(Unix)服务器内置:2014年9月9日14:48:20我的douglas.conf文件是644 root / wheel和以下文件:

<Directory "/Users/douglas/Sites">
   Options Indexes Multiviews
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

我的http.conf具有以下内容:

# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www

</IfModule>

...

DocumentRoot "/Library/WebServer/Documents"

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Satisfy All
</Directory>

...

<Directory "/Library/WebServer/Documents">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks MultiViews

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
#AllowOverride None
AllowOverride All
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
Satisfy All
</Directory>

任何事情将不胜感激。我尝试回滚到以前的http.conf文件,但是在需要加载的模块方面存在许多差异。我完全有可能错过了一个模块,但是日志中没有任何抱怨。


尽管chrisMc的答案很明确,但将来的失败者可能还希望阅读在Mac OS X Yosemite上安装Apache,PHP和MySQL的信息
杰森·麦克雷里

Answers:


17

在您的用户.conf(douglas.conf)中,替换为:

Order allow,deny
Allow from all

带有:

Require all granted

区别在于apache 2.4处理权限的方式

http://httpd.apache.org/docs/2.4/upgrading.html


我更改了httpd.conf和douglas.conf中的设置,但是仍然遇到相同的错误
new2code 2014年

1
不要忘记重启Apache
Thomas Edwards

这很酷,尽管如果您access_compat打开了模块,旧的“订购/允许/拒绝”仍然可以使用。我认为最好能得到错误并修复我的设置,而不是让它与旧的配置一起花费更长的时间。
亚历克西斯·威尔克2014年

11

我也遇到了同样的问题,并通过这样做解决了该问题:

  1. 通过在httpd.conf中找到以下行并将其取消注释来加载userdir模块: LoadModule userdir_module libexec/apache2/mod_userdir.so Include /private/etc/apache2/extra/httpd-userdir.conf

  2. 编辑extra / httpd-userdir.conf,找到并取消注释以下行: Include /private/etc/apache2/users/*.conf

  3. 编辑users / *。conf,在选项行中的所有选项之前添加Require local和添加+(或-)字符,如下所示: <Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>


1
这(准确地说,仅此而已,仅此而已)对我有用,而其他任何事情都没有。谢谢!
orome

1

在几天前应用了安全更新后,我在Mavericks上遇到了同样的事情。Mavericks仍在使用Apache 2.2,因此chrisMc并不是配置问题,尽管看起来他是对的,但您也需要更改它。

就我而言,我首先通过注释掉我之前添加的Homebrew PHP 5.4模块行来解决核心问题。在httpd.conf

#LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so

而是选择我之前注释过的默认PHP模块:

LoadModule php5_module libexec/apache2/libphp5.so

这样就解决了,但是对于为什么Homebrew版本损坏的原因,我认为也许针对它编译的系统库已在安全更新中更新。当我运行时,php -v我收到有关icu4c尚未加载的库的警告。

因此,我只是重新编译了PHP,然后又重新工作了。就我而言,我只是做了

brew uninstall php54
brew install php54

然后可以再次启用Homebrew模块。


1

由于我从未使用过自制软件,因此我最终遵循了本指南。个人发展的设置

我确实看到第一个发布者正在谈论的权限是问题的一部分,但是使用user.conf文件进行个人设置仍然存在权限问题。此设置使用了虚拟主机。我不知道自制是什么解决了这个问题。我想我可以称之为解决方法,因为它不能解决我原来的问题,即我无法使用user.conf文件访问Web服务器上的任何内容。


太棒了!对我来说,关键是简单地注释掉显然在优胜美地中新添加的第220-221行(# AllowOverride none# Require all denied)。
MarkHu

0

不加httpd.conf注释:

LoadModule authz_core_module libexec/apache2/mod_authz_core.so 
LoadModule authz_host_module libexec/apache2/mod_authz_host.so 
LoadModule userdir_module libexec/apache2/mod_userdir.so 
Include /private/etc/apache2/extra/httpd-userdir.conf

并且不加/etc/apache2/extra/httpd-userdir.conf注释:

Include /private/etc/apache2/users/*.conf

然后重新启动Apache。


0

上面的答案可以在库存安装中起作用。如果没有,那么一些事情可能会有所帮助:

  1. 在您的文件系统上,文件夹必须完全是带有大写S的站点(文件夹名称在userdir模块中进行了硬编码,不能有任何不同),其权限必须为:

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. <Directory…>配置应用在其顶部,因此它需要与文件夹名称完全匹配,包括大小写匹配(我们来自Linux…)。

    /etc/apache2/users/username.conf文件权限:

    -rw-r--r--  1 root  wheel  189 29 mar 11:42 username.conf
    

因此,请确保该行<Directory "/Users/user/Sites/">完全指向具有正确用户名的正确文件夹(用户与配置文件的名称匹配)(包括大小写),并且该Sites文件夹确实完全存在(包括大小写)。


0

就我而言,是Apache 2.4.27版。

从“ /etc/apache2/extra/httpd-vhosts.conf ”目录更改我的httpd-vhosts.conf文件后,解决了问题。

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>

至,

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    <Directory /Users/Vagabond/Sites/inventory/public/>
        Require all granted
        Options Includes FollowSymLinks
    </Directory>
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.