MB: 500 Internal Server Error (.htaccess)

nabend Community,

.htaccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA, L]

index.php

<?php
url		= $_GET['url'];
echo $url;
?>

Raus kam:

500 Internal Server Error

Quellverweis: PHP: Create Your Own MVC

Ich vermute, dass das mit User Rechten zutun hat nachdem ich in Foren gesucht habe. Ich lerne jetzt von wiki.selfhtml.org die .htaccess zu gebrauchen.

Ich bin ziehmlich neu in diesen Dingen bezogen auf .htaccess und möchte dieses Problem lösen und brauche hilfe.

Herzliche Oster Grüße, MB

akzeptierte Antworten

  1. <?php
    url		= $_GET['url'];
    echo $url;
    ?>
    

    Du hast für url zu spät bezahlt. Man erkennt das am fehlendem Währungssymbol.

    1. Dummer blöder Fehler von mir um euch ein abbild von meinem Code und das verbindende Problemchen zu projizieren.

      also Sorry das mit dem $, da Problem besteht nichts desto trotz

      Gruß MB

      1. Dummer blöder Fehler von mir um euch ein abbild von meinem Code und das verbindende Problemchen zu projizieren.

        In der von Dir gezeigten Fehlermeldung steht:

        "More information about this error may be available in the server error log."

        Es ist schon schlau, da mal reinzusehen. Die gesehenen Zeilen aus der .htaccess dürften das Problem nicht verursachen.

        Es kommen in Frage:

        • Der Apache darf die .htaccess nicht lesen.
        • Der Apache darf im Verzeichnis nicht lesen oder es nicht betreten.

        Dieser Teil der Fehlermeldung: "Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request." lässt mich vermuten, dass es Probleme mit dem Recht gibt, das Document-Root zu betreten oder darin zu lesen. Der Apache hat versucht die 500er Fehlerseite zu öffnen und durfte auch das nicht. Folge ist der weitere 403er.

        1. Noch was:

          Um herauszubekommen, ob es an einem eventuell nicht aktivierten Modul liegt schließt man die Regeln in eine Bedingung ein:

          <IfModule mod_rewrite.c>
          RewriteEngine On
          </IfModule>
          

          Apache neu starten, Seite (index.php) aufrufen. Kommt keine Fehlermeldung, dann sollte

          # <IfModule mod_rewrite.c>
          RewriteEngine On
          # </IfModule>
          

          (Apache neu starten, Seite (index.php) aufrufen)

          Sollte reichen um die Fehlermeldung zu wenn mod_rewrite nicht aktiviert ist. In dem Fall mod_rewrite aktivieren und den Apache neu starten.

          1. Also an den Modulen scheints nicht zu liegen. Danke für den Tipp

        2. Morgen Regina,

          Es ist schon schlau, da mal reinzusehen. Die gesehenen Zeilen aus der .htaccess dürften das Problem nicht verursachen.

          wenn ich doch wüsste wo das errorlog steht.

          Dieser Teil der Fehlermeldung: "Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request." lässt mich vermuten, dass es Probleme mit dem Recht gibt, das Document-Root zu betreten oder darin zu lesen.

          Denke ich auch was ja in der einleitenden Frage dieses Threats steht

          Um herauszubekommen, ob es an einem eventuell nicht aktivierten Modul liegt schließt man die Regeln in eine Bedingung ein: Kommt keine Fehlermeldung, dann sollte

          Ahhh... Ok

          Sollte reichen um die Fehlermeldung zu wenn mod_rewrite nicht aktiviert ist. In dem Fall mod_rewrite aktivieren und den Apache neu starten.

          Besten Dank! werde ich gleich ausprobieren!

          LG MB

          PS.: Wie verändere ich das mit den rechten??? bei Linux / Unix is es ja CHMOD von 0 - 7. Ich hab überhaupt keinen Plan wie es mit der Vergaben der Rechte bei Apache funzt. Sonst mache ich nochmal n neuen Threat auf.

          1. _PS.: Wie verändere ich das mit den rechten??? bei Linux / Unix is es ja CHMOD von 0 - 7. Ich hab überhaupt keinen Plan wie es mit der Vergaben der Rechte bei Apache funzt.

            Gemeint waren die Dateisystemrechte. Benutze den Explorer und die rechte Maustaste. Vieleicht findest Du auch gleich das error.log und die Konfiguration ...

            wenn ich doch wüsste wo das errorlog steht.

            Du wirst Dich bitte damit befassen a) die Konfiguration Deines Apache Webservers wenigstens mal durchzulesen (das steht nämlich genau darin) und b) Dich in die Dokumentation des Apache Webservers mal einzulesen. Wer Webseiten baut die mehr als nur statisches HTML beinhalten und also programmiert, der muss wissen was wie (und warum so) konfiguriert wurde.

            Sonst steht man irgendwann in der Zeitung: "Webserver gehackt, IS verbreitet Hinrichtungsfilme auf gehacktem deutschem Webserver, Betreiber wegen Terroristenunterstützung inhaftiert, Kontodaten und Passwörter von 2 Mio Nutzern öffentlich, Betreiber muss alle 6 Milliarden blauen Pillen schlucken die über seinen Server beworben wurden."

            Nochwas: Google hilft. Erste Antwort auf Suche nach "xampp error.log":

            http://stackoverflow.com/questions/3719549/where-does-phps-error-log-reside-in-xampp

            1. Hallo Regina,

              Gemeint waren die Dateisystemrechte. Benutze den Explorer und die rechte Maustaste. Vieleicht findest Du auch gleich das error.log und die Konfiguration ...

              Sry, was meinst du. Ganz blöde gesagt wenn ich im explorer rechte maustaste drücke erscheint jenacht dem was ich klick unterschiedliches. Und komm nicht error.log sondern n aufoppendes Menü mit der Rubrik z.B. Eigenschaften. Aber ich glaube kaum das du das meinst. oder meinst du die explorer.exe.

              Werd BITTE konkreter. Mit Sätzen die sich interpretieren lassen habe ich sehr große Probleme, diese richtig einzuordnen, so wie der verfasse es meint.

              wenn ich doch wüsste wo das errorlog steht.

              Du wirst Dich bitte damit befassen a) die Konfiguration Deines Apache Webservers wenigstens mal durchzulesen (das steht nämlich genau darin) und b) Dich in die Dokumentation des Apache Webservers mal einzulesen. Wer Webseiten baut die mehr als nur statisches HTML beinhalten und also programmiert, der muss wissen was wie (und warum so) konfiguriert wurde.

              ich befassse wäre dieses Threats mit .htaccess Dokumenten über wiki.selfhtml.org. Aber das was du genannt hast werde ich paralel machen. Ich Danke Dir.

              Und ich geben dir sehr recht. Man muss das können!

              Kannst du da was weiterempfelen referenzieren bezogen auf XAMPP apache?

              Grüße MB

              1. Hallo,

                Gemeint waren die Dateisystemrechte. Benutze den Explorer und die rechte Maustaste. Vieleicht findest Du auch gleich das error.log und die Konfiguration ...

                Sry, was meinst du.

                damit ist gemeint, dass in der Konfigurationsdatei des Apachen auch drinsteht, wo denn das Error-Log abgelegt ist (und wie es genau heißt).

                [...] aufoppendes Menü mit der Rubrik z.B. Eigenschaften. Aber ich glaube kaum das du das meinst.

                Doch, ich glaube genau das. Im Eigenschaften-Dialog der Verzeichnisse, in denen deine Web-Dateien liegen, kannst du auch ablesen, wer darauf zugreifen darf.
                Du testest doch auf einem XAMPP unter Windows, oder?

                ich befassse wäre dieses Threats

                Übrigens: Thread (Faden, auch im übertragenen Sinn) schreibt sich mit 'd' am Ende. Was du geschrieben hast (threat), bedeutet übersetzt Bedrohung.

                So long,
                 Martin

                1. Hallo Martin,

                  damit ist gemeint, dass in der Konfigurationsdatei des Apachen auch drinsteht, wo denn das Error-Log abgelegt ist (und wie es genau heißt).

                  Ah ok.

                  Doch, ich glaube genau das. Im Eigenschaften-Dialog der Verzeichnisse, in denen deine Web-Dateien liegen, kannst du auch ablesen, wer darauf zugreifen darf.

                  Ich meine [Windows 7 Desktop] im Explorer Navigation, irgendwo drauf rechts Klicken im Ordnerfenster oder in der Baumstruktur Fenster. Die Rubriken: [erweitern|freigeben für|senden an|ausschniden|kopieren|löschen|umbenennen|eigenschaften] oder [öffnen|bearbeiten|drucken|...] oder [ansicht|ordner anpassen|neu| eigenschaften] So habe ich das verstanden. da ist im Dialogfeld keine Rubrik neben [Eigenschaften], die Rubrik [error.log] oder [Konfigurationsdatei] egal wo man drauf klickt. Das hat sie so unmöglich gemeint aber genau das lese ich so.

                  Du testest doch auf einem XAMPP unter Windows, oder?

                  ja leider. Hätte gerne auf linux basis getestet aber ich kenne mich zuwenig damit aus.

                  Übrigens: Thread (Faden, auch im übertragenen Sinn) schreibt sich mit 'd' am Ende. Was du geschrieben hast (threat), bedeutet übersetzt Bedrohung.

                  ja weise ich dank das d mich drauf hingewiesen hast :).

                  Grüße MB

          2. Hallo,

            Sonst mache ich nochmal n neuen Threat auf.

            Du darfst gerne neue Threads eröffnen. Threats jedoch klingen so drohend.

            Gruß
            Kalk

  2. Hallo,

    url		= $_GET['url'];
    

    Da ist zu wenig Geld im Spiel, inverstier mal noch einen Dollar ...

    Raus kam:

    500 Internal Server Error
    

    Was steht im Errorlog des Servers? Bei einem 500er wird steht dort womit genau der Server ein Problem hat.

    Gruß,
    Tobias

    1. Hallo Tobias,

      Was steht im Errorlog des Servers? Bei einem 500er wird steht dort womit genau der Server ein Problem hat.

      Ich hab in diesem Threat den gesamten Error nachträglich gepostet.

      Gruß MB

  3. Hallo MB,

    <?php
    url		= $_GET['url'];
    echo $url;
    ?>
    

    Nur für den Fall, dass du die Anspielungen mit dem Geld nicht verstehst, mach ich hier den Spielverderber: Variablen beginnen mit einem $.

    Zudem ist das Umkopieren nicht notwendig. Gewöhn dir das gar nicht erst an. Beziehungsweise kopiere Variablen aus $_GET, $_POST und $_SERVER nur dann um, wenn du dir sehr genau überlegt hast, dass das sinnvoll ist.

    Dein 500er Fehler sollte damit mMn. aber nicht zusammenhängen.

    Bis demnächst
    Matthias

    --
    Wenn eine Idee nicht zuerst absurd erscheint, taugt sie nichts. (Albert Einstein)
    1. Dein 500er Fehler sollte damit mMn. aber nicht zusammenhängen.

      Das tut der aber:

      Alternativ-Text

      Warum aber niemand mehr ins error-log schaut bevor bei Nachbauen eines MVC-Sonstwas die Fehler sonstwo vermutet und sich die Mühe macht in einem Forum zu posten ist mir auch nicht ganz klar.

      1. Hallo Regina,

        Dein 500er Fehler sollte damit mMn. aber nicht zusammenhängen.

        Das tut der aber:

        Alternativ-Text

        Dein Screenshot zeigt einen Request mit Status 500 in einem Webinspektor. Woraus schliesst du anhand zugrunde liegender Informationen, dass der 500er durch das umkopieren erzeugt wird? Das fehlende $-Zeichen halte ich viel wahrscheinlicher für den Verursacher…

        LG,
        CK

        1. Hallo Regina,

          Das fehlende $-Zeichen halte ich viel wahrscheinlicher für den Verursacher…

          Osterwasser getrunken? Was glaubst Du (und warum) was ich wohl meinte? War ich um 21:41 nicht deutlich genug? Auch der Matthias Apsel wird wohl doch sehr viel mehr das fehlende Symbol gemeint haben als das überflüssige Umherkopieren von Daten. Das erzeugt im Gegensatz zu solchen Syntaxfehlern nämlich keine fatalen Fehler. Ich jedenfalls denke, der Matthias Apsel ist so schlau.

          1. Hallo Regina,

            Das fehlende $-Zeichen halte ich viel wahrscheinlicher für den Verursacher…

            Was glaubst Du (und warum) was ich wohl meinte?

            Dann solltest du besser zitieren. Du hast einen Teilsatz von Matthias zitiert, der sich auf das umkopieren der Daten bezog und dort deinen Beitrag drunter gesetzt. Was soll man denken worauf du dich beziehst?

            War ich um 21:41 nicht deutlich genug?

            Was du um 21:41 geschrieben hast stand hier gar nicht zur Debatte.

            Das erzeugt im Gegensatz zu solchen Syntaxfehlern nämlich keine fatalen Fehler.

            Ja, ach! Was meinst du, warum Matthias drunter geschrieben hat, dass das vermutlich nicht der Fehler war? ;-)

            LG,
            CK

      2. Hallo und Morgen Regina,

        Warum aber niemand mehr ins error-log schaut bevor bei Nachbauen eines MVC-Sonstwas die Fehler sonstwo vermutet und sich die Mühe macht in einem Forum zu posten ist mir auch nicht ganz klar.

        Ich habs anderweitig versucht zu lösen wie in der einleitenden Frage erwähnt. und wie in diesem Threat erwähnt ist durch das löschen des Quellcodes das $-Zeichen versehentlich mitgelöscht worden. Selbst wenn der Fehler passiert wäre, hätte .htaccess dennoch gemeckert, weil - so mutmaße ich - die PHP-Datei garnicht erst interpretiert wird. Also ist es egal was ich führ fehler machen würde. Wie gesagt ich bin sehr neu in diesem Gebiet und man möge mich verbessern wenn ich mit meinen mutmaßungen falsch lag.

        Grüße MB

    2. Hallo Matthias,

      Zudem ist das Umkopieren nicht notwendig. Gewöhn dir das gar nicht erst an. Beziehungsweise kopiere Variablen aus $_GET, $_POST und $_SERVER nur dann um, wenn du dir sehr genau überlegt hast, dass das sinnvoll ist.

      Ok, danke für den Tipp. Werde ich beherzigen. Bennende Frage ist Warum?

      Dein 500er Fehler sollte damit mMn. aber nicht zusammenhängen.

      Tut er auch nicht ;-)

      Zu Spielverderber: Ich Raff es nicht, erst dann, wenn jemand mir das erklärt. Ich glaube die Anspielug fällt in die Zwischenmenschliche Ebene und da habe ich massiv Probleme mit. Insofern danke ich Dir sehr.

  4. Hi,

    .htaccess

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    
    RewriteRule ^(.+)$ index.php?url=$1 [QSA, L]
    

    ist Rewriting per htaccess erlaubt? Siehe AllowOverride in der Server-Config.

    500 Internal Server Error

    Dann wäre, wie bereits erwähnt, ein Blick ins error.log sinnvoll.

    cu,
    Andreas a/k/a MudGuard

    1. Hi,

      ist Rewriting per htaccess erlaubt? Siehe AllowOverride in der Server-Config.

      ich glaube nicht nach dem Fehler. Ich bin eben anfänger bei .htaccess-Dateien

      Dann wäre, wie bereits erwähnt, ein Blick ins error.log sinnvoll.

      Gute Idee. Wo finde ich das? php_error_log im besagten Fehlerfall-Ordner stehts nicht drin und erzeugt dahingehend auch keinen Fehler.

      Gruß MB

      1. Hi,

        Dann wäre, wie bereits erwähnt, ein Blick ins error.log sinnvoll.

        Gute Idee. Wo finde ich das? php_error_log

        Nein. errror.log.

        Wo das zu finden ist, hängt von der Apache-Installation ab (Xampp, normaler Apache) und afaik auch vom Betriebssystem.

        cu,
        Andreas a/k/a MudGuard

  5. Nachtrag: Ich hab beim löschen des vom Problem irreführenden Codes das $-Zeichen gelöscht. Soory dafür. Muss ja ordentlich sein.

    Der Rückgabewert:

    500 Internal Server Error

    Internal Server Error
    
    The server encountered an internal error or misconfiguration and was unable to complete your request.
    
    Please contact the server administrator at postmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.
    
    More information about this error may be available in the server error log.
    
    Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
    Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3 Server at localhost Port 80
    

    Gruß MB

    1. Tach!

      Der Rückgabewert:

      500 Internal Server Error

      Internal Server Error
      
      The server encountered an internal error or misconfiguration and was unable to complete your request. [...]
      

      Das ist die Ausgabe im Browser. Die ist bei 500er Fehlern bewusst nichtssagend gehalten. Man kann daraus die Ursache nicht erkennen. Die steht im ErrorLog des Apachen. Es kann sein, dass der Fehler bereits vor dem Start von PHP auftritt, dann findet sich in PHPs ErrorLog nichts. Wenn man sich selbiges nicht selbst konfiguriert hat, finden sich PHP-Fehlermeldungen ebenfalls im Apache-ErrorLog oder auch im systemweiten Logging.

      Bei Hostern ist es manchmal nicht möglich, ins ErrorLog zu schauen. Da hilft nur eine lokale Installation und die Hoffnung, dass der Fehler dort nachvollziehbar ist. Ansonsten muss man schrittweise die hinzugefügten Dinge entfernen und schauen, wann der Fehler weg ist oder wieder auftritt, um sich die Ursache einzukreisen.

      dedlfix.

  6. Quellverweis: PHP: Create Your Own MVC

    require ".... $_GET['url'] ...";

    Gar nicht erst anfangen, riesen Sicherheitsproblem.

    1. Morgen pl,

      require ".... $_GET['url'] ...";

      Gar nicht erst anfangen, riesen Sicherheitsproblem.

      Ok, hat man mich schon drauf aufmerksam gemacht. Werde ich vermeident. Warum ist die Frage.

      LG MB

      1. Tach!

        require ".... $_GET['url'] ...";

        Gar nicht erst anfangen, riesen Sicherheitsproblem.

        Ok, hat man mich schon drauf aufmerksam gemacht. Werde ich vermeident. Warum ist die Frage.

        Weil damit beliebige Dinge eingebunden werden können, die nicht unter deiner Kontrolle stehen. Sowas kann man nur machen, wenn man solch einen Parameter gegen eine Whitelist (Liste der erlaubten (Datei)namen) prüft.

        dedlfix.

      2. Morgen pl,

        require ".... $_GET['url'] ...";

        Gar nicht erst anfangen, riesen Sicherheitsproblem.

        Ok, hat man mich schon drauf aufmerksam gemacht. Werde ich vermeident. Warum ist die Frage.

        Die Bindung URL <=> Class muss intern erfolgen, sonst ist das über den URL manipulierbar. Deswegen auch keine Klassen oder Pseudoklassen im URL selbst kodieren, auch wenn das Magento so macht.

        Die Klassenbindung erfolgt gewöhnlich in der Konfiguration. Nichts sprich jedoch dagegen, für Debug-Zwecke den Namen der an den URL gebundenen Klasse mit auszugeben, z.B. als <!-- class=XY --> HTML Kommentar im Template oder Custom hEader.

      3. Moment, ihr meint doch nicht etwa die url:

        "?user=irgendwer&passwort=irgendwas"
        

        denn da bin ich schon lange raus