Apache2 403 - Forbidden

  • Hallo!


    Ich habe mit Apache2 einen Webserver aufgesetzt. Die Testwebsite "Apache2 Debian Default Page" kann ich problemlos aufrufen.
    Jetzt kommt das Problem: Ich möchte eine php-Seite aufrufen. Doch das geht nicht. Im webbrowser erscheint immer die Fehlermeldung "403 - Forbidden".


    Ich hatte es eigentlich vor drei Monaten schon genauso gemacht, aber komischerweise hat es damals funktioniert.


    Woran könnte der Fehler liegen?
    Ich habe pi schon der Gruppe www-data zugewiesen und mittels " sudo chown pi:www-data -R /var/www" die Rechte neu vergeben.


    Habt ihr ne Lösung? Mich wundert, dass eine html aufrufbar ist, eine php-Seite allerdings nicht...



    Freue mich über eure Antworten!

  • 1. Wo liegt die Datei?
    2. Wem gehört die Datei?


    Bitte poste mal die Ausgabe des Befehls ls -la /var/www/html/ ... bitte in CODE



    Ich habe pi schon der Gruppe www-data zugewiesen und mittels " sudo chown pi:www-data -R /var/www" die Rechte neu vergeben.


    Sowas bitte nicht machen. Die Dateien sollten dem Benutzer gehören über den der Webserver läuft: www-data. Alles andere birgt ein Sicherheitsrisiko und Chaos. Also bitte wieder rückgängig machen: sudo chown -R www-data:www-data /var/www/*
    Aber wie du vielleicht am obigen Befehl siehst müssten die Dateien seit Jessie im DocumentRoot /var/www/html/ Verzeichnis liegen.

  • Danke für eure schnellen Antworten!


    Ja, das php-Modul ist installiert. Habs zur Sicherheit nochmal überprüft.


    die Ausgabe von ls -la /var/www/html/ ergibt:


    Code
    pi@raspberrypi:~ $  ls -la /var/www/html/
    insgesamt 24
    drwxr-sr-x 2 www-data www-data  4096 Mai 19 19:43 .
    drwxr-sr-x 3 pi       www-data  4096 Apr 13 22:49 ..
    -rwxr-xr-x 1 www-data www-data 11104 Apr 13 22:50 index.html
    -rwxr-xr-x 1 www-data www-data  3373 Apr 15 13:26 index.lighttpd.html


    Ich habe die Rechte jetzt wie du gesagt hast wieder vergeben wie vorher.
    Jetzt kann ich allerdings auch nicht mehr mit Filezilla Datein in das Verzeichnis /var/www/ kopieren... (permission denied)

  • Dann melde dich über Filezilla als root an und änder anschließend die Besitzerrechte der Datei :fies: Ich empfehle aber WinSCP o.ä. zu verwenden und dann halt SFTP zur Übertragung zu nutzen (nicht zu verwechseln mit FTPS!). Siehe dazu auch FAQ => Welche SSH Clients gibt es?


    Wie gesagt muss die PHP Datei ins Verzeichnis /var/www/html/
    Du hast es vermutlich zuvor in /var/www/ abgelegt...


    Das ist die Standardeinstellung des DocumentRoot Verzeichnisses in der apache2 Konfiguration:

    Code
    grep DocumentRoot /etc/apache2/sites-enabled/000-default.conf
  • Hab die Datei jetzt im /html liegen. Gleicher Fehler wie vorher.


    Nochmal die Ausgabe mit der Datei:

    Code
    pi@raspberrypi:~ $ ls -la /var/www/html/
    insgesamt 28
    drwxr-sr-x 2 www-data www-data  4096 Mai 19 23:18 .
    drwxr-sr-x 3 pi       www-data  4096 Apr 13 22:49 ..
    -rwxr-xr-x 1 www-data www-data 11104 Apr 13 22:50 index.html
    -rwxr-xr-x 1 www-data www-data  3373 Apr 15 13:26 index.lighttpd.html
    -rw-r--r-- 1 www-data www-data    79 Mai 19 23:18 test.php



    Filezilla kann auch sftp. Ist da noch ein Unterschied weshalb ich lieber WinSCP verwenden sollte?

    Edited once, last by Bauer1 ().

  • /html wäre falsch... wenn dann /var/www/html/
    Das ist ein gewaltiger Unterschied ob /html/ oder /var/www/html/. Ebenso so wie /home/pi/ ein Unterschied zu /root/ ist.


    Und wie gesagt muss die Datei entweder...
    - dem Benutzer www-data gehören
    - der Gruppe www-data gehören
    - anderen Benutzern Leserechte bieten.


    Siehe dazu auch https://wiki.ubuntuusers.de/Rechte/#Zugriffsrecht


    Der Webserver wird als Benutzer www-data ausgeführt.
    Andere Benutzer haben kein Recht in fremde Verzeichnisse zu gucken oder fremde Dateien zu lesen. So darf zB der Benutzer "pi" nicht ins Benutzerverzeichnis /root/ und erst recht nicht in /root/ irgendwelche Dateien lesen.
    Bedeutet also: Der www-data Benutzer muss genügend Rechte im DocumentRoot Verzeichnis haben.


    "Forbidden" bedeutet: Verweigert
    "403" ist der HTML-Statuscode für: Forbidden ... Siehe dazu https://de.wikipedia.org/wiki/…x_.E2.80.93_Client-Fehler


    "404" wäre: Not Found. Also nicht gefunden. Du kriegst aber 403, also passt etwas mit den Rechten nicht.


    Bei deiner obigen "ls -la" Ausgabe habe ich aber keine PHP Datei in /var/www/html/ gesehen ... also entweder die Fehlermeldung ist nicht mehr aktuell, oder dein DocumentRoot entspricht nicht /var/www/html/ .... Du hast aber zuvor bereits an den Verzeichnis-Rechten herumgepuscht und keine Ahnung was du noch alles verstellt hast


    Was passt wenn du die index.html aufrufst? Also JETZT noch mal

  • Ich meine natürlich /var/www/html/. Der Unterschied zu /html/ ist mir bewusst.


    Wenn ich das jetzt richtig sehe, gehört die Datei test.php dem Benutzer www-data (x=lesen, w=schreiben, x=ausführen), die Gruppe, zu der ich Pi hinzugefügt habe kann lesen und ausführen und andere auch lesen und ausführen. Ist das so richtig?


    Wenn www-data also alle Rechte hat, und der Server als www-data ausgeführt wird, wieso bekomme ich trotzdem 403-forbidden?

    Edited once, last by Bauer1 ().

  • Ja das ist soweit richtig. Aber wie gesagt, keine Ahnung was du noch alles verstellt/verändert hast...


    Bitte Ausgabe folgender Befehle posten:

    Code
    grep DocumentRoot /etc/apache2/sites-enabled/000-default.conf
    wget -O- http://127.0.0.1/test.php
    tail -n5 /var/log/apache2/{error,access}.log
  • So. Hier sind die Ausgaben der Befehle:


    Danke für deine Hilfe, alleine komme ich echt nicht weiter!


  • Führ den letzten Befehl mal mit sudo aus


    Es kommt exakt die gleiche Ausgabe:

    Code
    pi@raspberrypi:~ $ sudo tail -n5 /var/log/apache2/{error,access}.log
    ==> /var/log/apache2/error.log <==
    ==> /var/log/apache2/access.log <==
  • Ich denke ich werde den Rpi ganz neu aufsetzen. Ist zwar viel Arbeit alles wieder so zum laufen zu kriegen, aber vielleicht funktioniert es ja.


    Trotzdem erstmal danke für eure Bemühungen! :thumbs1:

    Edited once, last by Bauer1 ().

  • Wieso den ganzen Pi neu auf setzen wenn es denn aber nur den Webserver betrifft? :-/


    Oder installierst du auch Windows neu nur weil du Firefox neu installieren willst?


    Code
    sudo apt-get remove --purge apache2 php5
    sudo apt-get autoremove
    sudo rm -rf /var/www
    sudo apt-get install apache2 php5
  • Nein, natürlich nicht. Aber ich suche seit Stunden nach dem Fehler und ich weiß, dass es zu Beginn mal ging. Also habe ich mir wohl aus Versehen irgendwas zerschossen. Und in der Zeit, in der ich weiter nach dem Fehler suche, ist es für mich einfacher, es neu aufzusetzen.