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?
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
userdir
:Sudo a2enmod userdir
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
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.
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
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