Como faço para que meu diretório de usuários funcione novamente para compartilhamento na Web?

26

Eu tinha o compartilhamento da Web ativado no Lion e um site em http://localhost/~user, onde userestá meu diretório de usuários. Quando atualizei para o Mountain Lion, o compartilhamento da Web (Apache) permaneceu ativado e eu posso acessar o host local e obter a opção "Funciona!" página da web padrão, mas não consigo mais acessar minha página de usuário. O erro é

Proibido

Você não tem permissão para acessar / ~ user / neste servidor.

Como reativar a página da web do meu diretório de usuários?

indiv
fonte

Respostas:

18

Aqui está como você pode reativar a página da web com a linha de comando usando o Terminal.

Primeiro copie e cole no Terminal. Pode ser necessário pressionar enterapós colar para executá-lo. Ele solicitará sua senha porque está adicionando um arquivo ao diretório do 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

Em seguida, execute este comando para reiniciar o servidor da web:

sudo apachectl restart
indiv
fonte
Desculpe, meu erro, você também precisa do nome do arquivo conf. No entanto, $ (basename ~) também deve funcionar
nohillside
1
Eu fiz algo um pouco diferente disso. Obrigado indiv pelas informações que me ajudaram a criar uma solução personalizada para minha configuração. Eu adicionei o bloco "Diretório" que você precisa para /etc/apache2/extra/httpd-userdir.conf com um "*" no lugar de "$ USER_DIR". Isso permite diretórios de usuários para todos os usuários que possuem um diretório "Sites".
Jason
1

Eu tive que adicionar FollowSymLinkso seguinte ao meu /etc/apache2/users/username.conf:

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

( usernamedeve ser substituído pelo seu nome de usuário real)

Matthieu Riegler
fonte
1

Aqui está um comando de terminal de uma linha que habilitará o servidor apache interno do macOS e permitirá que você use o diretório Sites na sua pasta Usuário. É compatível com a versão mais recente do macOS até o momento (Mojave) e também foi testado para funcionar com Sierra e High Sierra. Suspeito que funcione também com outras versões - fiz o possível para escrevê-lo de maneira preparada para o 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"

† Bem, tecnicamente é uma linha, mesmo que seja realmente muito longa ...

Wowfunhappy
fonte
0

Consulte /apple//a/57555/9058 , basicamente você precisa habilitar o compartilhamento na web por usuário manualmente (com Terminal.app).

nohillside
fonte
0

O Mountain Lion remove o arquivo de configuração que dá acesso à web ao seu diretório de usuários. Os arquivos de configuração estão em /etc/apache2/users/. O que falta é user.confonde user é seu nome de usuário curto.

Se você não quiser mexer com a linha de comando, aqui está um Applescript que você pode executar para criar um arquivo de configuração para o usuário. Ele solicitará sua senha, pois precisa criar o arquivo em um diretório no nível do sistema e precisa de privilégios elevados.

Na pasta de aplicativos ou na Barra de Ativação, abra Other > Applescript Editor. Copie o script abaixo e cole-o na área de texto do editor de Applescript. Em seguida, clique no botão Executar .

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

Quando o script terminar, você poderá acessar sua página da web no nível do usuário.

indiv
fonte