Web Apps seit 2004.

500 Interner Serverfehler

…und wie man es repariert.

Die kurze Antwort: Dies ist normalerweise ein Berechtigungsfehler in Ihrem CGIscript, der leicht zu beheben ist. Gehen Sie zu Ihrem FTP-Client oder Ihrem Website-Dateimanager und markieren oder klicken Sie mit der rechten Maustaste auf das CGI-Skript. Dann wähleneigenschaften oder Berechtigungen oder “Chmod” und setzen Sie es auf world-executable: das ist0755 oder a + rx oder -rwxr-xr-x. Verwenden Sie NICHT 0777 (a + rwx oder -rwxrwxrwx). Und Ihr cgi-bin Verzeichnis selbst sollte auch 0755 sein, nicht 0777.

Die lange Antwort:wenn Sie ein Perl-CGI-Skript wie FileChucker oderuserbase ausführen, wird möglicherweise die Meldung “Interner Serverfehler” in Ihrem Browser angezeigt. In der Nachricht steht normalerweise auch etwas wie “Bitte überprüfen Sie das Fehlerprotokoll des Servers, um weitere Informationen zu erhalten.” Sie sollten das tun – die im Fehlerprotokoll gedruckte Nachricht sagt Ihnen oft genau, was das Problem ist. Das Apache-Fehlerprotokoll befindet sich beispielsweise häufig unter /var/log/apache/error_log oder /var/log/apache2/error_log (orsometimes “error.log”).

Wenn Sie keinen Zugriff auf das Fehlerprotokoll haben, ist es am einfachsten, eine Sicherungskopie des Skripts zu erstellen, dann das Original zu öffnen und alle zu löscheninhalte, und fügen Sie nur diese 3 Zeilen zur Datei hinzu:

#!/usr/bin/perlprint "Content-type: text/plain\n\n";print "testing...\n";

( Hinweis: Wenn der Server ein Windows-System ist, ersetzen Sie die erste Zeile obenmit entweder #!perl oder #!c:\path\to\perl.exe.)

Versuchen Sie nun erneut, die Seite in Ihrem Browser aufzurufen. Wenn es funktioniert (Sie sehen”Testen…” als Ausgabe), dann wissen Sie, dass Ihr Server zumindest für die Ausführung von Perl-CGI-Skripten konfiguriert ist. Wenn es nicht funktioniert, liegt das Problem möglicherweise in der Serverkonfiguration und nicht in Ihrem CGIscript. (Zum Beispiel, sind Sie sicher, dass Sie tatsächlich Perl installiert haben? Praktisch alle UNIX / Linux / OS X-Server tun dies, aber Windows-Server müssen es normalerweise manuell aus einem kostenlosen Paket wie ActivePerl installieren.)

Angenommen, Ihr Server ist ordnungsgemäß für die Ausführung von CGI-Skripten konfiguriert, kann Ihr Problem eine der folgenden häufigen Ursachen für den internen Serverfehler sein:

Probleme außerhalb des Skripts:

  1. Verzeichnisberechtigungen: ihr cgi-bin-Verzeichnis sollte als 0755 und nicht als 0777 chmodded sein. Ähnlich, wenn Ihr Skript bei ist …/cgi-bin/foo/Balken.cgi, das foo-Verzeichnis darf nicht beschreibbar sein (0777). Dies liegt daran, dass viele Server sich aus Sicherheitsgründen weigern, CGI-Skripte in world-writabledirectories auszuführen.
  2. Dateiberechtigungen: Ihr CGI-Skript selbst muss aus den gleichen Gründen auch 0755 und nicht 0777 sein.
  3. Übertragungsmodi: Wenn Sie FTP verwenden, um das CGI-Skript auf Ihren Server zu übertragen, ist Ihr FTP-Client wahrscheinlich auf den AUTOMATISCHEN Übertragungsmodus eingestellt; thatis, wird es versuchen, herauszufinden, ob Binär- oder ASCII-Modus withoutasking Sie zu verwenden. Je nachdem, ob Ihr CGI-Skript von einem Windows- oder UNIX-System stammt und ob es sich um ein Windows- oder UNIX-System handelt, müssen Sie Ihren FTP-Client möglicherweise manuell auf ASCIODER Binärmodus einstellen, bevor Sie Ihr CGI-Skript übertragen. Versuchen Sie eine und thenthe andere.
  4. Zeilenenden: Die Ursache des Übertragungsmodusproblems ist eigentlich ein anderesproblem an sich: verschiedene Arten von Betriebssystemen (nämlich Windowsvs. UNIX / Linux / alles) verwenden unterschiedliche Zeichencodes, um Zeilenenden darzustellen. Wenn Ihr Server ein UNIX-Server ist, Sie jedoch Ihr CGI-Skript auf einem Windows-Computer mit einem Texteditor bearbeiten, der keine Zeilenenden im UNIX-Stil verwendet, führt dies zu Problemen. Anwendungen wie GoLive und Dreamweaver verstehen das manchmal falsch. Sogar eingebaute Editoren können nicht zustimmen: WordPad (nicht Word) scheint es richtig zu machen, während Notepad es vermasselt. Öffnen Sie also &, speichern Sie Ihr CGI-Skript in einem anderen Texteditor und laden Sie es erneut auf den Server hoch.

Probleme im Skript:

  1. Die Shebang-Linie: die erste Zeile eines CGI-Skripts muss die enthaltenpfad zur Perl-Binärdatei auf dem Server. Auf den meisten UNIX-Servern ist dies nur #!/usr/bin/perl oder manchmal #!/usr / local /bin/perl und Sie könnenführen Sie immer den Befehl “which perl” aus, um dies sicher herauszufinden. Auf Windowsservern können Sie manchmal nur mit #!perl, aber Sie müssen den vollständigen Pfad wie # angeben!c:\path\to\perl.exe.
  2. Tatsächliche Skriptfehler: Es ist immer möglich, dass im Perl-Code selbst einfach ein Fehler vorliegt. Wenn Sie Probleme mit einem Skript haben, das Sie von Encodable Industries gekauft haben, ist dies unwahrscheinlich, da viele andere Leute genau das gleiche Skript gekauft haben und es justfine ausführen.

Verwandte Probleme

  1. Ein weiteres häufiges Problem mit CGI-Skripten ist das vorzeitige Ende des Skriptheaderserror .

Leave a Reply