web-dev-qa-db-fra.com

Apache ne peut pas accéder aux dossiers de mon répertoire personnel

J'ai modifié la configuration d'Apache pour qu'elle pointe vers un dossier de mon répertoire personnel:

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

J'ai même donné mon /home/dbugger/html permission 777. Mais je continue à recevoir le même message d'erreur à http://localhost: "403 Forbidden"

Qu'est-ce qui me manque?

25
Enrique Moreno Tent

Cela a fonctionné pour moi

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

L'important était de changer

Order allow, deny

à

Require all granted 
23
szydan

Activer le module userdir:

Sudo a2enmod userdir 

Activer l'exécution PHP dans le répertoire utilisateur:

Sudo nano /etc/Apache2/mods-available/php5.conf  

(Ou si vous utilisez php7.0, par exemple)

Sudo nano /etc/Apache2/mods-available/php7.0.conf

Commentez cette partie (mettez # au début de chaque ligne):

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

Presse Ctrl+X sauver

Activer la liste des répertoires:

Sudo nano /etc/Apache2/Apache2.conf

Ajoute ça:

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

Presse Ctrl+X sauver


Redémarrez Apache (Sudo requis ici également):

Sudo service Apache2 restart

Maintenant, placez vos fichiers php dans le répertoire /home/yourname/public_html et allez à
http://localhost/~yourname à partir de votre navigateur Web.

17
dgreene

Apache s'exécute en tant qu'utilisateur www-data. S'il n'a pas d'autorisation d'exécution sur votre maison, Apache ne pourra lire aucun fichier.

Changez le groupe de votre maison en www-data:

chgrp www-data /home/dbugger

Et ne lui donnez la permission que de parcourir votre répertoire personnel:

chmod g+x /home/dbugger

Vous pouvez également restreindre les permisions de /home/dbugger/html:

chgrp www-data /home/dbugger/html
chmod 750 /home/dbugger/html
10
Eric Carvalho

Vous n'avez pas besoin de modifier les autorisations si vous souhaitez utiliser votre répertoire de base pour héberger l'environnement de développement, du moins si vous avez besoin d'autorisations en écriture pour certaines applications. Vous avez besoin du module Apache mod_userdir et vous pouvez accéder à/home/nom_utilisateur/public_html/* comme ceci http: //domain.local/ nom_utilisateur/nom_dir/ * pour utiliser un hôte virtuel, utiliser le module mod_userdir vous devez créer un lien sym comme celui-ci:

$ 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
1
user1916831