Apache no funciona con la carpeta de Sitios de usuario en macOS 10.13 High Sierra

8

He seguido esta guía para configurar Apache en High Sierra: https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-macos-sierra/

Lo usé para configurarlo en Sierra.

Pero cuando voy http://localhost/~scott/me sale "Prohibido. No tienes permiso para acceder a / ~ scott / en este servidor".

Una sugerencia sobre esta pregunta similar: localhost / userdir en macOS High Sierra es cargar vhosts. Lo que he intentado, pero todavía me "Prohibido".

¿Ha cambiado algo entre Sierra y High Sierra que impida que Apache trabaje con las carpetas de Sitios de usuario?

sfyfedotcom
fuente
Pruebe apachectl configtesty actualice la salida
Rakesh kumar el
DevolucionesSyntax OK
sfyfedotcom
De acuerdo, visite la URL localhost / ~ yourusername
Rakesh kumar el
"Prohibido. No tiene permiso para acceder a / ~ scott / en este servidor".
sfyfedotcom

Respuestas:

8

Esto funcionó para mí cuando me encontré con el mismo problema.

Verifique el archivo "/private/etc/apache2/extra/httpd-userdir.conf".

cambio

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

a

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

y reiniciar apache.

De: /programming/39631351/apache-localhost-403-forbidden-with-macos-sierra

Robert
fuente
Esa línea /private/etc/apache2/extra/httpd-userdir.confya no está comentada, desde el enlace de instrucciones que seguí.
sfyfedotcom
¿reiniciaste apache "sudo apachectl restart"
Robert
Si. He hecho todos los cambios en los archivos de configuración de Apache
sfyfedotcom
4

Para permitir el acceso al directorio de Sitios, debe agregar lo siguiente a /etc/apache2/httpd.conf:

<DirectoryMatch "/Users/.*/Sites">
  Require all granted
</DirectoryMatch>

La configuración predeterminada de Apache está establecida como denegada en /, por lo que debe permitir explícitamente el acceso a todo.

AGraefe
fuente
Se agregó y reinició Apache. No hizo ninguna diferencia
sfyfedotcom
Yo tuve el mismo problema. Estaba recibiendo el "¡Funciona!" en locahost, pero no pudo hacer que los directorios de usuarios funcionen. La solución de la regla DirectoryMatch como esta lo resolvió. ¡Gracias!
Karra
4

Solo para ampliar la respuesta de Diogo Lima.

Con la actualización a High Sierra, Apple hizo copias de su configuración anterior de apache y agregó un ~ anterior a los archivos * .conf en las carpetas / etc / apache2 y / etc / apache2 / extra. Si está utilizando hosts virtuales o ssl-virtuales, también deberá mover sus versiones anteriores para esos archivos .conf.

mv /etc/apache2/extra/httpd-vhosts.conf~previous /etc/apache2/extra/httpd-vhosts.conf
mv /etc/apache2/extra/httpd-ssl.conf~previous /etc/apache2/extra/httpd-ssl.conf
James Martin
fuente
Esta fue una instalación limpia de High Sierra, por lo que no tenía ningún archivo de configuración anterior
sfyfedotcom
Entonces, solo para aclarar, ¿lo tenía funcionando en Sierra, pero no realizó una actualización, sino más bien una instalación limpia completa? Cuando configuré que funcionara en Sierra, recuerdo que creé un enlace simbólico desde mi carpeta Sitios a la carpeta / Library / WebServer / Documents y me aseguré de haberme otorgado permiso (lectura y escritura). Dado que parece ser solo un problema de permisos en esta etapa, ¿ha realizado el enlace simbólico y ha cambiado los permisos?
James Martin el
Si eso es correcto. Siempre hago una instalación limpia de las nuevas versiones de macOS. Soy consciente de que puedo hacer eso, pero quiero mantener ambos /Library/WebServer/Documentsy Users/username/Sitescomo ubicaciones separadas para proyectos web, ya que eso es lo que he podido hacer en macOS durante los últimos 10 años.
sfyfedotcom
Por lo tanto, parece que necesitaría ejecutar dos instancias separadas de Apache en la misma máquina, pero ¿eso no frustraría el propósito de equilibrar la carga de los sitios web que ahora ofrece Apache cuando se ejecuta desde una sola instancia? La recomendación de mejores prácticas de Apple es no usar más los Usuarios / nombre de usuario / Sitios y seguir con la Biblioteca / Servidor web / Documentos
James Martin
La única instancia de Apache es un cable de lectura de proyectos web de múltiples directorios. Así es como lo he configurado durante años.
sfyfedotcom
1

Estaba en la misma situación, aparentemente hay algunas líneas más para descomentar en httpd.conf, los vhosts no están activados en High Sierra. - https://apple.stackexchange.com/a/299929/259065

Hugo Muralles
fuente
Ya había comentado ambas líneas. No hay diferencia
sfyfedotcom
1

Acabo de actualizar esta mañana. Usando la carpeta Sitios en / Usuarios / nombre de usuario.

Copia de seguridad y reemplazo httpd.conf, httpd-userdir.conf y https-vhosts.conf con las ~ variantes anteriores.

Ran sudo apachectl configtesty obtuve el error PHP (PHP actualizado a 7 en High Sierra). Editado http.conf para iniciar PHP7 y ahora todo está funcionando nuevamente.

Jim Nail
fuente
+1 por incluir notasudo apachectl configtest
David C
1

Posible solución (después de fallar con todas las sugerencias anteriores). El problema es con el permiso del directorio de inicio. Debe ser ejecutable para grupo / otros:

sudo chmod go + x / Usuarios / nombre de usuario

donde "nombre de usuario" se reemplazará con el nombre de usuario real. Después de esto, ¡funciona!

Gabor
fuente
0

¡¡Uf!! Lo descubrí yo mismo.

Hacer estos pasos

Paso 1: abre tu terminal y ejecuta este comando a continuación

sudo atom /etc/apache2/httpd.conf

Y luego descomente la línea quitando el "#"letrero antes

LoadModule php7_module libexec/apache2/libphp7.so

Paso 2: Ejecute el siguiente comando mencionado a continuación

cd /private/etc

sudo cp php.ini.default php.ini

Paso 3: luego ve a tu /Library/WebServer/Documentsdirectorio y haz un

sudo chown -R  root yourprojectname

Regrese a su navegador Safari y escriba "http://localhost/yourprojectname"

Estás listo para ir.

Estoy usando MacOS High Sierra 10.13, se actualizó ayer por la mañana.

Shadab K
fuente
localhosthuir /Library/WebServer/Documentsestá funcionando bien. El problema está en funcionamiento localhost/~scottdesde /Users/Scott/Sites.
sfyfedotcom
0

Pasé toda la mañana para resolverlo, pero finalmente funcionó. Espero que esto pueda ser útil para alguien.

Seguí una guía, pero con un ligero cambio.

Ahora puedo acceder a las carpetas localhost, pero ...

Antes de la sierra alta era como: http://localhost/~username/smomesite.local

Ahora es como: http://localhost/smomesite.local

No se ~usernamerequiere más .

iGian
fuente
No quiero cambiar la ruta web predeterminada de Apache a mi carpeta de usuario. En la versión anterior de macOS he sido capaz de ejecutar archivos / sitios tanto del Users/myname/Sitesdirectorio y/Library/WebServer/Documents
sfyfedotcom
0

Acabo de tener este mismo problema y quería hacer exactamente lo que quería (mantener la raíz en / Library / WebServer / Documents, pero también permitir las carpetas de Sitios de usuario). No estoy seguro de si esto será útil, pero después de tocar esto durante horas esta noche, mirando línea por línea a través de todos los archivos .conf y preguntándome qué estaba mal, me di cuenta de que el proceso httpd no podía leer mi propio directorio de usuarios. Por alguna razón, se configuró como 750 y el usuario _www no puede leerlo. Una vez lo arreglé ejecutando "chmod 755". en mi directorio de usuarios, la carpeta Sitios apareció justo arriba.

No estoy seguro de cómo fue mi propio directorio de usuarios, ya que parece que tienen un valor predeterminado de 755 cuando creo un nuevo usuario. Y ya había verificado dos veces que mi carpeta de Sitios estaba configurada en 755.

Pablo
fuente
Solo intenté eso y reinicié Apache. Todavía "Prohibido: no tiene permiso para acceder / ~ nombre de usuario / en este servidor"
sfyfedotcom
0

Yo tuve el mismo problema. Descomenté las dos líneas a continuación (como ya se sugirió en otra respuesta)

#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so 
#Include /private/etc/apache2/extra/httpd-vhosts.conf

Pero aún tiene el mismo error. El truco para mí fue descomentar estas líneas adicionales en el archivo httpd.conf:

#LoadModule userdir_module libexec/apache2/mod_userdir.so 
#LoadModule include_module libexec/apache2/mod_include.so 
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Espero que ayude.

Miguel
fuente
Ya he
comentado
0

Sucede que la actualización movió toda su configuración anterior a los archivos .conf ~ anterior. Si mueve /etc/apache2/extra/httpd-userdir.conf~previous a /etc/apache2/extra/httpd-userdir.conf, y /etc/apache2/extra/httpd.conf~previous a / etc / apache2 / extra / httpd.conf, debería funcionar como antes.

mv /etc/apache2/extra/httpd-userdir.conf /etc/apache2/extra/httpd-userdir.conf~high-sierra
mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf~high-sierra
mv /etc/apache2/extra/httpd-userdir.conf~previous /etc/apache2/extra/httpd-userdir.conf
mv /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
apachectl restart
Diogo Lima
fuente
Esta fue una instalación limpia de High Sierra, por lo que no tenía ningún archivo de configuración anterior
sfyfedotcom
0

He tenido el mismo problema. La resolución fue fácil. Vea la respuesta publicada aquí: https://apple.stackexchange.com/a/306390/129503

Me enfrenté a lo mismo después de actualizarme a High Sierra el día de hoy. Encontré que los siguientes archivos apache fueron reemplazados por nuevas versiones. Afortunadamente para todos estos archivos existía un ARCHIVO ~ archivo anterior en la misma carpeta. Acabo de copiar la ~ versión anterior a las originales, reinicié Apache y todo estuvo bien.

En carpeta /etc/apache2:

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Ejemplo:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
Unmesh
fuente
0

Reemplazar

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

de archivos anteriores ~ anteriores.

Es posible que obtenga un error del módulo php5 en httpd.conf, reemplace php5 con php7 y sus sitios deberían comenzar a funcionar.

Reemplazar

LoadModule php5_module libexec/apache2/libphp5.so

Con

LoadModule php7_module libexec/apache2/libphp7.so
Reverselógico
fuente
0

Acabo de actualizar y tuve exactamente los mismos problemas. No uso vhosts. La solución para mí fue garantizar:

En el https.confcomentario

LoadModule userdir_module libexec/apache2/mod_userdir.so

LoadModule authz_host_module libexec/apache2/mod_authz_host.so

LoadModule authz_user_module libexec/apache2/mod_authz_user.so

LoadModule authz_core_module libexec/apache2/mod_authz_core.so

y asegúrese de que extra/httpd-user.conftenga la línea:

UserDir Sites
Helen Snaith
fuente