web-dev-qa-db-fra.com

Interdit Vous n'êtes pas autorisé à accéder à ce serveur. Centos 6/Laravel 4

j'ai eu un problème après avoir fini de configurer LAMP et installé mon application Laravel 4. Tout semble aller bien, quand je vais sur mon adresse ip, cela me montre la première page de mon application correctement, mais tout le reste de la page me renvoie une erreur 404 L'URL demandée n'a pas été trouvée sur ce serveur.

J'ai donc ajouté à mon httpd.conf (sous l'hôte virtuel de mon projet) - AllowOverride All Order allow, deny

<VirtualHost *:80>
        ServerName VPS-IP-ADDRESS
        DocumentRoot /var/www/html/nextmatch/public_html/public/

       <Directory /var/www/html/nextmatch/public_html/public/>
         AllowOverride all
         Order allow,deny
          <IfModule mod_rewrite.c>
          Options -MultiViews
          RewriteEngine On
          RewriteCond %{REQUEST_FILENAME} !-f
         RewriteRule ^ index.php [L]
       </IfModule>
</Directory>
</VirtualHost>

Et maintenant, lorsque j'essaie de naviguer à la place de l'erreur 404, j'ai obtenu ForbiddenVous n'avez pas la permission d'accéder à ce serveur . J'ai installé avec chmod 775 -R path/laravel/ et le dossier de stockage avec 777, la même erreur tout suggérer s'il vous plaît? Je n'arrive pas à comprendre ce problème, je deviens fou! Merci pour toute aide.

12
Fabrizio Fenoglio

Le serveur Web commence en tant que démon (service) sous un utilisateur particulier. Cet utilisateur est défini dans httpd.conf. Par défaut, cet utilisateur sera Apache. Ne confondez pas l'utilisateur Apache avec le processus httpd. Ce dernier est un démon de serveur Web et le premier est l'utilisateur sous lequel il va s'exécuter. Si le dossier que vous avez créé appartient à root ou à un utilisateur autre que celui défini dans httpd.conf, Apache ne pourra pas y accéder. Pour identifier ce problème, vous devez aller dans le dossier et faire ls -l. Si l'utilisateur défini dans httpd.conf est Apache, vous devez voir ceci pour pouvoir accéder au dossier:

drwxr-xr-x.  2 Apache apache    4096 Jan  8  2013 public_folder

Notez qu'il est écrit 'Apache apache', ce qui signifie qu'il appartient à l'utilisateur et au groupe Apache. Si vous l'avez créé via root, vous verrez probablement:

drwxr-xr-x.  2 root root    4096 Jan  8  2013 public_folder

L'utilisateur Apache ne peut pas accéder au dossier défini par root. Pour résoudre ce problème, exécutez la commande:

chown -R Apache:apache myfolder

L'option -R est récursive, elle va donc mettre à jour la propriété de TOUS les dossiers et fichiers de ce dossier pour l'utilisateur Apache.

Si votre propriété vous convient, essayez alors de désactiver «temporairement» selinux. Sur centos vous faites:

setenforce 0

Ce qui désactivera selinux jusqu'au prochain redémarrage. Idéalement, vous souhaiterez laisser selinux activé pour plus de sécurité et définir un contexte valide pour vos fichiers et dossiers Apache.

Si désactiver Selinux fonctionne, le contexte de sécurité de vos fichiers et dossiers est probablement incorrect. Exécutez la commande suivante pour restaurer vos contextes de sécurité:

restorecon -R -v /var/www/
13
Rijndael

Si vous utilisez CentOS, cela pourrait être un problème avec selinux. Vérifiez si selinux est activé avec 'sestatus'. S'il est activé, vous pouvez vérifier si tel est le problème (temporairement) à l'aide de 'Sudo setenforce 0'. Si Apache peut servir le site, il vous suffit alors de modifier le contexte des fichiers de manière récursive à l'aide de 'Sudo chcon -R -t httpd_sys_content_t' (vous pouvez vérifier le contexte existant à l'aide de 'ls -Z'.

Selinux n'est peut-être pas le problème, mais cela vaut la peine de vérifier.

8
iavery

essayez ceci dans le dossier: 

chcon -R -t httpd_sys_content_t *
5
Mahdi
chcon -R -t httpd_sys_content_t *

a fait le tour pour moi.

2
tummie

depuis php5.conf dans/etc/Apache2/mods-available

# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_value engine Off
#    </Directory>
#</IfModule>
0
Douglas G. Allen