Je sais que cette question est beaucoup posée, mais les solutions que j'ai vues ne m'ont pas fonctionné.
Un seul hôte virtuel est activé et j'essaie d'activer l'accès à un dossier qui ne se trouve pas sous la racine du document.
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /movies /home/username/Videos/Movies
<Directory /home/username/Videos/Movies/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Je règle /etc/Apache2/envvars
comme suit
export Apache_RUN_USER=www-data
export Apache_RUN_GROUP=public
Je me suis assuré que/home/nom_utilisateur/Videos/et ses sous-dossiers sont la propriété de username:public
, définissez les autorisations sur 777 (après que 775 ne fonctionne pas) et que l'utilisateur www-data
appartient au groupe public
.
Maintenant, quand je navigue sur http://localhost/movies
je reçois
[Mon Apr 21 11:28:14.971844 2014] [core:error] [pid 1385:tid 140067725104896] (13)Permission denied: [client 127.0.0.1:46603] AH00035: access to /movies/ denied (filesystem path '/home/username/Videos') because search permissions are missing on a component of the path
Mais lorsque je règle /etc/Apache2/envvars
pour exécuter Apache sous username
(mon propre nom d'utilisateur), tout fonctionne correctement. Le problème est lié à la permission, mais je ne vois pas comment dans mon cas; surtout quand je règle les permissions sur 777
. Des idées?
P.S. La version Ubuntu est 14.04, Apache est 2.4.7 et je n'ai pas édité d'autres fichiers de configuration.
Faites un chmod +x
sur votre répertoire utilisateur et redémarrez Apache. 755 les autorisations devraient fonctionner. J'ai eu des problèmes avec 644 .
Si dans le cas où selinux est le problème, plutôt que de simplement le désactiver, cette page et cette page donnez la commande pour accorder l'accès:
chcon -R -t httpd_sys_content_t ~/public_html/
Vous avez peut-être activé selinux. Essayer
getenforce
Si cela montre "Enforcing", essayez
setenforce 0
et essayez si cela résout votre problème.
J'ai rencontré le même problème, après des heures d'essais, j'ai trouvé une solution qui résout le problème:
https://wiki.Apache.org/httpd/13PermissionDenied
Fondamentalement, le serveur Apache ne requiert pas seulement les autorisations de lecture de tous les fichiers qu’il sert, mais également l’autorisation d’exécution de tous les répertoires situés sur le chemin de votre hôte virtuel.
L'utilitaire namei peut être utilisé pour résoudre les problèmes d'autorisations en répertoriant les autorisations associées à chaque composant du chemin:
namei -m /usr/local/Apache2/htdocs/foo/bar.html
Dans mon cas, un répertoire dans mon chemin a l'autorisation 700, cela cause le problème. Après avoir changé en 701, le problème a été résolu.
Je rencontrais ce problème lorsque j'essayais d'exécuter Apache dans un conteneur de menu fixe sur un hôte Ubuntu 16.04 qui utilisait le noyau 4.4 au lieu de 4.10.
Une fois que j'ai exécuté cette commande sur l'hôte et que j'ai été redéployé, tout allait bien:
Sudo apt-get install --install-recommends linux-generic-hwe-16.04