O Apache não pode acessar pastas no meu diretório home

23

Alterei a configuração do Apache para apontar para uma pasta no meu diretório pessoal:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /home/dbugger/html

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/dbugger/html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Eu até mesmo dei minha /home/dbugger/html permission 777. Mas continuo recebendo a mesma mensagem de erro em http://localhost : "403 Forbidden"

O que eu sinto falta?

    
por Enrique Moreno Tent 28.07.2013 / 05:24

4 respostas

18

Isso funcionou para mim

<Directory />
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

O importante foi mudar

Order allow, deny

para

Require all granted 
    
por szydan 25.04.2014 / 16:47
17

Ativar userdir module:

sudo a2enmod userdir 

Ativar a execução do PHP no diretório do usuário:

sudo nano /etc/apache2/mods-available/php5.conf  

(Ou se estiver usando o php7.0, por exemplo)

sudo nano /etc/apache2/mods-available/php7.0.conf

Comente esta parte (coloque # no início de cada linha):

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

Pressione Ctrl + X para salvar

Ativar listagem de diretórios:

sudo nano /etc/apache2/apache2.conf

Adicione isto:

<Directory /home/*/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Pressione Ctrl + X para salvar

Reinicie o apache ( sudo exigido aqui também):

sudo service apache2 restart

Agora, coloque seus arquivos php no diretório /home/yourname/public_html e acesse % http://localhost/~yourname do seu navegador da Web.

    
por David Greene 31.08.2014 / 02:10
10

O Apache é executado como usuário www-data . Se não tiver permissão de execução em sua casa, o apache não poderá ler nenhum arquivo.

Altere o grupo da sua casa para www-data :

chgrp www-data /home/dbugger

E dê permissão apenas para percorrer o seu diretório pessoal:

chmod g+x /home/dbugger

Você também pode restringir as permissões de /home/dbugger/html :

chgrp www-data /home/dbugger/html
chmod 750 /home/dbugger/html
    
por Eric Carvalho 28.07.2013 / 05:38
1

Você não precisa alterar as permissões se quiser usar o seu diretório pessoal para hospedar o ambiente de desenvolvimento, pelo menos que você precise de permissões de gravação para alguns aplicativos. Você precisa do módulo mod_userdir do apache e pode acessar / home / user_name / public_html / * como este link * para usar um virtual hosts, para usar o módulo mod_userdir você precisa criar um link sym como este:

$ sudo ln -s /etc/apache2/mods-available/userdir.conf /etc/apache2/mods-enabled/
$ sudo ln -s /etc/apache2/mods-available/userdir.load /etc/apache2/mods-enabled/
$ sudo service apache2 restart
    
por user1916831 28.07.2013 / 06:13

Tags