cliente apache denegado por la configuración del servidor después de la actualización de Mac OS X a Yosemite

10

Sé que esto se parece a otras preguntas, pero Yosemite parece haber cambiado algo con la configuración de apache con la actualización. mi registro de errores dice "cliente denegado por la configuración del servidor: /Users/douglas/Sites/testpatient.php"

Versión de Apache: MacBook-Pro: apache2 douglas $ apachectl -v Versión del servidor: Apache / 2.4.9 (Unix) Servidor construido: 9 de septiembre de 2014 14:48:20 mi archivo douglas.conf es 644 root / wheel y lo siguiente:

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

mi http.conf tiene lo siguiente:

# 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>

Cualquier cosa sería apreciada. Intenté regresar al archivo http.conf anterior, pero hay varias diferencias en cuanto a los módulos que deben cargarse. Es completamente posible que me haya perdido un módulo, pero no hay ninguna queja en el registro.

new2code
fuente
Si bien la respuesta de chrisMc es acertada , los futuros tropiezos también pueden querer leer la instalación de Apache, PHP y MySQL en Mac OS X Yosemite .
Jason McCreary

Respuestas:

15

En su usuario .conf (douglas.conf) reemplace:

Order allow,deny
Allow from all

Con:

Require all granted

La diferencia es cómo apache 2.4 maneja los permisos

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

chrisMc
fuente
Cambié la configuración en httpd.conf y douglas.conf pero sigo teniendo el mismo error
new2code
1
No olvides reiniciar Apache
Thomas Edwards
Esto es genial, aunque el antiguo Pedido / Permitir / Denegar todavía funciona si tiene el access_compatmódulo encendido. Creo que hubiera sido mejor para mí obtener errores y corregir mis configuraciones en lugar de dejarlo pasar más tiempo con las configuraciones antiguas.
Alexis Wilke
11

También tuve el mismo problema y lo solucioné al hacerlo:

  1. Cargue el módulo userdir buscando las siguientes líneas en httpd.conf y descomentándolo: LoadModule userdir_module libexec/apache2/mod_userdir.so Include /private/etc/apache2/extra/httpd-userdir.conf

  2. Edite extra / httpd-userdir.conf , busque y descomente la siguiente línea: Include /private/etc/apache2/users/*.conf

  3. Edite los usuarios / *. Conf , agregue Require localy agregue +(o -) carácter antes de todas las opciones en la línea de opciones, así: <Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>

s4nji
fuente
1
Esto (exactamente esto, nada más, nada menos) funcionó para mí, cuando nada más lo hizo. ¡Gracias!
orome
1

Experimenté lo mismo pero en Mavericks después de aplicar la actualización de seguridad de hace un par de días. Mavericks todavía está usando Apache 2.2, por lo que no fue el problema de configuración que mencionó chrisMc, aunque parece que tiene razón y también tendrá que cambiar eso.

En mi caso, primero resolví el problema central comentando la línea del módulo Homebrew PHP 5.4 que había agregado previamente. En el httpd.conf:

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

Y en su lugar, opto por el módulo PHP predeterminado que había comentado antes:

LoadModule php5_module libexec/apache2/libphp5.so

Eso lo solucionó, pero en cuanto a por qué se rompió la versión Homebrew , creo que tal vez una biblioteca del sistema con la que se compiló se actualizó en la actualización de seguridad. Cuando corrí php -vrecibí una advertencia sobre una icu4cbiblioteca que no estaba cargada.

Entonces, simplemente recompilé PHP y funcionó nuevamente. En mi caso, acabo de hacer

brew uninstall php54
brew install php54

Entonces el módulo Homebrew podría habilitarse nuevamente.

toddabrahm
fuente
1

Como nunca he usado homebrew, terminé siguiendo esta guía. Configuración para desarrollo personal .

Vi que los permisos de los que hablaba el primer póster eran parte del problema, pero todavía tengo un problema de permisos con la configuración personal usando un archivo user.conf. Esta configuración utilizaba hosts virtuales. No tengo idea de qué hizo homebrew que resolvió el problema. Supongo que llamaría a esto una solución porque no solucionó mi problema original, que es que no puedo acceder a nada en el servidor web usando un archivo user.conf.

new2code
fuente
¡Increíble! La clave para mí fue simplemente comentar las líneas 220-221 ( # AllowOverride noney # Require all denied) que aparentemente se agregaron recientemente en Yosemite.
MarkHu
0

En el httpd.confcomentario:

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

Y en el /etc/apache2/extra/httpd-userdir.confcomentario:

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

Luego reinicie Apache.

chrisMc
fuente
0

Las respuestas anteriores funcionan, en una instalación de stock. Si no, algunas cosas que podrían ayudar:

  1. En su sistema de archivos, la carpeta debe ser exactamente Sitios con una S mayúscula (el nombre de la carpeta está codificado en el módulo userdir, no puede ser diferente) Sus permisos deben ser:

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. La <Directory…>configuración se aplica encima, por lo que debe coincidir exactamente con el nombre de la carpeta, incluido el caso (venimos de Linux ...).

    Permisos del /etc/apache2/users/username.confarchivo:

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

Por lo tanto, asegúrese de que la línea se <Directory "/Users/user/Sites/">refiere exactamente a la carpeta correcta con el nombre de usuario correcto (con el usuario que coincide con el nombre del archivo de configuración), caso incluido, y la Sitescarpeta existe exactamente como es, caso incluido.

Brunni
fuente
0

En mi caso, apache versión 2.4.27.

Problema resuelto después de cambiar mi archivo httpd-vhosts.conf del directorio " /etc/apache2/extra/httpd-vhosts.conf ".

De

<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>

A,

<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>
sh6210
fuente