it-swarm.com.de

Verboten Sie haben keine Zugriffsberechtigung auf diesem Server. Centos 6/Laravel 4

ich habe ein Problem, nachdem ich die Installation von LAMP abgeschlossen habe und meine Laravel 4-Anwendung installiert habe. Alles scheint gut gelaufen zu sein, wenn ich meine IP-Adress-URL betrete, wird mir die erste Seite meiner Anwendung korrekt angezeigt, aber der Rest der Seite wirft einen 404-Fehler. Die angeforderte URL wurde auf diesem Server nicht gefunden.

Also fügte ich meiner httpd.conf hinzu (unter dem virtuellen Host meines Projekts) - AllowOverride All Order zulassen, verweigern

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

Und jetzt, wenn ich versuche, stattdessen den 404-Fehler zu navigieren, erhielt ich Forbidden Sie haben keine Berechtigung, auf diesen Server zuzugreifen Ich habe chmod 775 -R path/laravel/ und den Ordnerspeicher mit 777 eingerichtet, aber ich habe immer noch dieselbe Fehlermeldung bitte vorschlagen Ich kann dieses Problem nicht herausfinden, ich werde verrückt! Danke für jede Hilfe.

12

Der Webserver startet als Daemon (Dienst) unter einem bestimmten Benutzer. Dieser Benutzer ist in httpd.conf definiert. Standardmäßig ist dieser Benutzer Apache. Verwechseln Sie den Apache-Benutzer nicht mit dem httpd-Prozess. Letzteres ist ein Webserver-Daemon, und ersterer ist der Benutzer, unter dem er ausgeführt wird. Wenn der von Ihnen erstellte Ordner zu root oder einem anderen Benutzer als dem in httpd.conf definierten gehört, kann Apache nicht darauf zugreifen. Um dieses Problem zu identifizieren, gehen Sie in den Ordner und führen Sie ls -l aus. Wenn der Benutzer in httpd.conf "Apache" definiert hat, sollten Sie für den Zugriff auf den Ordner Folgendes sehen:

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

Beachten Sie, es steht 'Apache Apache', dh es gehört zum Apache-Benutzer und zur Apache-Gruppe. Wenn Sie es über root erstellt haben, werden Sie wahrscheinlich Folgendes sehen:

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

Der Apache-Benutzer kann nicht auf den von root definierten Ordner zugreifen. Um dieses Problem zu lösen, führen Sie den Befehl aus:

chown -R Apache:apache myfolder

Die Option -R ist rekursiv, sodass der Besitz aller Ordner und Dateien in diesem Ordner für den Apache-Benutzer aktualisiert wird.

Wenn Ihr Eigentum in Ordnung ist, versuchen Sie 'Selinux' vorübergehend auszuschalten. Auf Centos machst du:

setenforce 0

Dadurch wird selinux bis zum nächsten Neustart ausgeschaltet. Idealerweise sollten Sie selinux für zusätzliche Sicherheit aktiviert lassen und einen gültigen Kontext für Ihre Apache-Dateien und -Ordner festlegen.

Wenn das Deaktivieren von Selinux funktioniert, haben Sie wahrscheinlich einen falschen Sicherheitskontext für Ihre Dateien und Ordner. Führen Sie den folgenden Befehl aus, um Ihre Sicherheitskontexte wiederherzustellen:

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

Wenn Sie CentOS verwenden, könnte dies ein Problem mit Selinux sein. Prüfen Sie, ob Selinux mit 'sestatus' aktiviert ist. Wenn es aktiviert ist, können Sie mithilfe von 'Sudo setenforce 0' überprüfen, ob dies das Problem ist (vorübergehend). Wenn Apache die Site bereitstellen kann, müssen Sie lediglich den Kontext der Dateien rekursiv mit 'Sudo chcon -R -t httpd_sys_content_t' ändern (Sie können den vorhandenen Kontext mit 'ls -Z' überprüfen.

Selinux mag nicht das Problem sein, aber es lohnt sich, es zu überprüfen.

8
iavery

versuchen Sie dies in dem Ordner: 

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

hat den Trick für mich gemacht.

2
tummie

von php5.conf in/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