Cheatah: Providerwechsel und jetzt Premature end of script headers??

Beitrag lesen

Hi,

$basedir = "/usr/local/apache/vhosts/domainname.xyz/cgi-bin/blafaseldirthema/";

eine Variablenzuweisung erzeugt noch keinen Fehler. Wo wird dies verwendet,

Eines für das Gästebuch, eines für [...]

nein nein, das meine ich nicht. Wo _im Code_, also bei welchen Befehlen wird das verwendet?

was wird _dort_ für ein Fehler zurückgegeben?

Nach dem Absenden auf eines der vorhin genannten
Formulare kommt eben immer nur das für den Surfer
sichtbare:

Auch das meine ich nicht. Der Fehler ist gewöhnlich im Browser nicht sicher - dafür aber im Error-Log. Zumindest wenn das Script brauchbar geschrieben ist und kritische Aktionen mit einem 'or die "Fehler bei xyz: $!";' abgeschlossen werden.

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

Tja, eben :-)

zum error.log und dort steht dann drin:


[Sat Sep  9 05:03:56 2000] [error] [client XXX.XXX.XXX.XXX] Premature end of script headers: /usr/local/apache/vhosts/meinedomaine.yz/cgi-bin/blafaseldirthema/dateiname.pl

Ergo ist das Script _nicht_ brauchbar geschrieben *seufz*

Übrigens: Herzlichen Glückwunsch zur Verwendung von perl -w.

??

Das machen viel zu wenige. In SelfHTML wird es leider auch nur am Rande erwähnt - gute Perl-Programmierer beginnen ihre Scripts aber _immer_ damit.

Hättest Du das Script damit mal testweise an der Kommandozeile ausgeführt, hättest Du bei der Zuweisung von $basedir ohne "my" eine Warnung bekommen. Vielleicht ist diese ja schon Dein Fehler?

Also gut, ich habe das jetzt gerade vorhin - so wie Du
sagst - ohne dem -w gemacht:

Ähm, da hast Du mich falsch verstanden, glaube ich :-) Mit -w erfährst Du eher, was im Script noch alles falsch ist.

Und es kommt immer noch der gleiche 500 Error-Mist mit
LOG-File

Dann hast Du das Script nicht von der Kommandozeile aus gestartet (also per Telnet oder in einer DOS-Box).

use CGI::Carp 'fatalsToBrowser';

direkt nach der Shebang-Zeile.

Gut, machen wir das auch wie Du sagst:

#!/usr/bin/perl
use CGI::Carp 'fatalsToBrowser';

[...]

500 Internal Server Error

Dann ist was ziemlich an der Basis falsch. Hast Du das Script im ASCII-Modus hochgeladen? Rechte richtig gesetzt? Ist der Server passend konfiguriert? Perl an der richtigen Stelle (ich schätze ja, sonst wäre die Fehlermeldung eine andere)? Alle benötigten Module/Scripts/Kommandos richtig installiert?

Internal Server Error

Du brauchst die identische (nutzlose) Fehlermeldung übrigens nicht immer komplett auszuschreiben :-(

Vermutlich werden irgendwo anders noch Systemkommandos o.ä. aufgerufen,....

Woher soll ich das wissen?

Im Script nachgucken, es startet sie ja schließlich, bzw. versucht es.

Das ist ein ganz normaler
Apache mit CGI. Bei anderen Apaches auf anderen Hosts
und beim früheren Provider ging das ja alles auch.
Jetzt plötzlich nicht mehr. Das kann doch eigentlich
gar nicht an mir liegen, oder?

Keine Ahnung. Hast Du Deinen Provider mal gefragt, was er dazu meint?

#!/usr/bin/perl
bleibt ganz normal (es gibt auch /usr/local/bin/perl
bei anderen Hosts, wo das Teil nur so funzt)

Stimmen die Perl-Versionen dort überein? Hast Du es mal mit /usr/local/bin/perl versucht?

Was mache ich denn jetzt? Wie kann ich die "Rechte- oder
Userverteilung" feststellen? CGI ist ja aktiviert.

"CGI ist aktiviert" merkt man schon daran, daß ein ISE kommt :-) Das bringt aber nichts.

Vielleicht hilft Dir noch diese Info:

Nope, leider nicht.

Hab mal vorhin auf die Schnelle das WWW-Board von Matt Wright
ebenfalls reingeschmissen, auch der macht diesen 500 ERROR
mit "Premature end of script headers". Kann doch nicht sein,
dass ein solch einfaches WWW-Board bei Dir laeuft und bei mir
macht das Teil 500 ERROR "Premature end of script headers"?

Wie gesagt, offenbar ist etwas an der Basis falsch. Frag mal Deinen Provider etwas "kräftiger". Oder bring erst mal dieses Script zum Laufen:

#!/usr/bin/perl -w
print "Content-type: text/plain\n\n";
print 'Läuft!';

Prüfe die Scripts alle wie gesagt auch von der Kommandozeile aus (perl -c script.pl, perl script.pl, immer mit "-w" im Code).

Cheatah