¿Cómo hago para que mi directorio de usuario vuelva a funcionar para compartir en la web?


26

Tenía habilitado el uso compartido web en Lion y un sitio web en http://localhost/~user, donde userestá mi directorio de usuarios. Cuando actualicé a Mountain Lion, el intercambio web (Apache) permaneció habilitado y puedo ir a localhost y obtener el mensaje "¡Funciona!" página web predeterminada, pero ya no puedo acceder a mi página de usuario. El error es

Prohibido

No tiene permiso para acceder a / ~ usuario / en este servidor.

¿Cómo vuelvo a habilitar la página web de mi directorio de usuarios?

Respuestas:


18

Aquí es cómo puede volver a habilitar la página web con la línea de comando usando Terminal.

Primero copie esto y péguelo en la Terminal. Puede que tenga que presionar enterdespués de pegar para ejecutarlo. Le pedirá su contraseña porque está agregando un archivo al directorio de su sistema.

USER_DIR=$(basename $(echo ~))
sudo bash -c "cat > /etc/apache2/users/$USER_DIR.conf" <<TEXT
<Directory "/Users/$USER_DIR/Sites">
     Options Indexes MultiViews
     AllowOverride None
     Order allow,deny
     Allow from all
</Directory>
TEXT

Luego ejecute este comando para reiniciar el servidor web:

sudo apachectl restart

Lo siento, mi error, también lo necesitas para el nombre del archivo conf. Sin embargo, $ (nombre base ~) también debería funcionar
nohillside

1
Hice algo un poco diferente a esto. Gracias indiv por la información que me ayudó a crear una solución personalizada para mi configuración. Agregué el bloque "Directorio" que tiene a /etc/apache2/extra/httpd-userdir.conf con un "*" en lugar de "$ USER_DIR". Esto habilita los directorios de usuarios para todos los usuarios que tienen un directorio "Sitios".
Jason

1

Tuve que agregar FollowSymLinkslo siguiente a mi /etc/apache2/users/username.conf:

<Directory "/Users/username/Sites/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>

( usernametiene que ser reemplazado por su nombre de usuario real)


1

Aquí hay un comando de terminal de una línea que habilitará el servidor apache integrado de macOS y le permitirá usar el directorio de Sitios en su carpeta de Usuario. Es compatible con la última versión de macOS a partir de este escrito (Mojave), y también se ha probado para funcionar con Sierra y High Sierra. Sospecho que también funcionará con otras versiones. Hice mi mejor esfuerzo para escribirlo de una manera a prueba de futuro.

mkdir ~/Sites ; sudo bash -c "printf '<Directory \"/Users/`whoami`/Sites/\">\n\tAddLanguage en .en\n\tAllowOverride All\n\tOptions Indexes MultiViews FollowSymLinks\n\tRequire all granted\n</Directory>' > /etc/apache2/users/`whoami`.conf ; echo 'AddDefaultCharset utf-8' >> /etc/apache2/httpd.conf ; sed -i '' '/LoadModule userdir_module libexec\/apache2\/mod_userdir.so/s/^#*//g' /etc/apache2/httpd.conf ; sed -i '' '/LoadModule php[0-9]_module libexec\/apache2\/libphp[0-9].so/s/^#*//g' /etc/apache2/httpd.conf ; sed -i '' '/Include \/private\/etc\/apache2\/extra\/httpd-userdir.conf/s/^#*//g' /etc/apache2/httpd.conf ; sed -i '' '/Include \/private\/etc\/apache2\/users\/\*.conf/s/^#*//g' /etc/apache2/extra/httpd-userdir.conf ; apachectl start"

† Bueno, técnicamente es una línea, incluso si es realmente muy larga ...



0

Mountain Lion elimina el archivo de configuración que proporciona acceso web a su directorio de usuarios. Los archivos de configuración están en /etc/apache2/users/. El que falta es user.conf, donde usuario es su nombre de usuario corto.

Si no quiere jugar con la línea de comando, aquí hay un Applescript que puede ejecutar para crear un archivo de configuración para su usuario. Le pedirá su contraseña porque tiene que crear el archivo en un directorio de nivel de sistema y necesita privilegios elevados.

En su carpeta de aplicaciones o Launchpad, abra Other > Applescript Editor. Copie el script a continuación y péguelo en el área de texto del editor Applescript. Luego haga clic en el botón Ejecutar .

set userHome to (short user name of (system info))
set configFile to "/etc/apache2/users/" & userHome & ".conf"
set configFileContents to "<Directory \"/Users/" & userHome & "/Sites/\">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>"

do shell script "echo '" & configFileContents & "' > " & configFile with administrator privileges
do shell script "/usr/sbin/apachectl restart" with administrator privileges

Cuando finalice el script, debería poder acceder a su página web de nivel de usuario.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.