2012-03-30 9 views
2

Ich versuche ein CGI-Skript auszuführen, es ist ein langes Skript, also werde ich hier nicht einfügen, aber es funktioniert auf meinen anderen Servern, aber aus irgendeinem Grund, wenn ich versuche, es auszuführen auf meinem neuen Server erhalte ich Fehler Interner Server (500), und wenn ich die apache-Log hier überprüfen ist, was ich bekommen:CGI-Skript läuft nicht, Interner Serverfehler (500) Fehler

[Fri Mar 30 08:38:29 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/test.cgi' failed 
[Fri Mar 30 08:38:29 2012] [error] [client 199.212.76.124] Premature end of script headers: test.cgi 
[Fri Mar 30 08:38:29 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico 
[Fri Mar 30 08:41:11 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/test.cgi' failed 
[Fri Mar 30 08:41:11 2012] [error] [client 199.212.76.124] Premature end of script headers: test.cgi 
[Fri Mar 30 08:41:11 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico 
[Fri Mar 30 08:41:12 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/test.cgi' failed 
[Fri Mar 30 08:41:12 2012] [error] [client 199.212.76.124] Premature end of script headers: test.cgi 
[Fri Mar 30 08:41:12 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico 
[Fri Mar 30 08:41:15 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/test.cgi' failed 
[Fri Mar 30 08:41:15 2012] [error] [client 199.212.76.124] Premature end of script headers: test.cgi 
[Fri Mar 30 08:41:15 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico 
[Fri Mar 30 08:41:20 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/upload.cgi' failed 
[Fri Mar 30 08:41:20 2012] [error] [client 199.212.76.124] Premature end of script headers: upload.cgi 
[Fri Mar 30 08:41:20 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico 
[Fri Mar 30 08:41:21 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/upload.cgi' failed 
[Fri Mar 30 08:41:21 2012] [error] [client 199.212.76.124] Premature end of script headers: upload.cgi 
[Fri Mar 30 08:41:21 2012] [error] [client 199.212.76.124] File does not exist: /var/www/htdocs/favicon.ico 
[Fri Mar 30 08:41:29 2012] [error] [client 199.212.76.124] (2)No such file or directory: exec of '/var/www/cgi-bin/upload.cgi' failed, referer: http://bla.com 
[Fri Mar 30 08:41:29 2012] [error] [client 199.212.76.124] Premature end of script headers: upload.cgi, referer: http://bla.com 

ich alles versucht haben, chmod die Dateien, perl-Module installieren, erneute Überprüfung der Konfiguration usw. !!!! Kann nicht herausfinden, was los ist !!! aber ich kann garantieren, dass das Skript nicht kaputt ist!

Grüße

+2

Dies könnte ein falscher Pfad zur ausführbaren Datei sein. Bestätigen Sie, dass '#!/Usr/bin/perl' oder was auch immer in der ersten Zeile vorhanden ist und ausführbar ist. – mcsi

+0

Ich kann fast garantieren, dass dein Skript kaputt ist, wenn es nicht von selbst ist, dann durch unerfüllte Abhängigkeiten. Überprüfen Sie zusätzlich zu dem, was @mcsi gesagt hat, nach fehlenden Berechtigungen, fehlenden Bibliotheken, falschen Versionen usw. Das Ausführen des Skripts über die Befehlszeile könnte eine gute Möglichkeit sein, mehr zu entdecken. – tripleee

+0

Nur weil Ihr Skript funktioniert, heißt das nicht, dass es keinen 500 Fehler gibt. Wenn Ihr Skript beispielsweise keinen Inhaltstyp an Apache zurückgibt, wird dieser Fehler ausgelöst. – GoldenNewby

Antwort

2

Try running:

perl -c /var/www/cgi-bin/upload.cgi 

Zitat von perldoc perlrun:

-c causes Perl to check the syntax of the program and then exit 
     without executing it. Actually, it will execute "BEGIN", 
     "UNITCHECK", "CHECK", and "use" blocks, because these are 
     considered as occurring outside the execution of your program. 
     "INIT" and "END" blocks, however, will be skipped. 
2

Führen Sie Ihr Skript mit perl -w/var/www/cgi-bin /upload.cgi.

I-Header einen HTTP sollte

Content Type: text/html 
[blank line] 

Wenn nicht, Ihr Skript nicht funktioniert gut schreiben. Vielleicht übergibt Ihnen der andere Server eine Variable und Ihr Skript erstellt keinen richtigen Header mehr.

Fügen Sie diesen Code in die sehr to Ihres Skripts ein. Wenn Ihr Skript schlecht aussieht, aber funktioniert, haben Sie den Fehler gefunden.print ("Inhaltstyp: text/html \ n \ n");

print("Content Type: text/html\n\n"); 

Grüßen,

1

Andere Dinge würden

  • die Lage von Perl in der ersten wie (#!/Usr/..)
  • dos2unix die Datei zu überprüfen, keine asci Zeichen
  • andere CGI-Skripte an verschiedenen Orten zu beseitigen CGI-Setup
  • Verzeichnis Dauerwellen? Nicht sicher, ob dies Auswirkungen
Verwandte Themen