Philipp Hasenfratz: Probleme mit der Anzeige im Browser

Beitrag lesen

Halihallo peter

Ich habe ein Perl-Skript geschrieben, welches ein Programm auf der Shell einer Unix-Maschine startet und die Daten im HTML-Format an den Browser sendet.

Wie rufst du das Shell-Programm auf? - popen, system, Backticks, IPC::open2, IPC::open3,
...

Einige Funktionen des Shell-Programms benötigen ein paar Sekunden, um die Daten zurückzugeben.

wenn der gestartete Prozess nicht "detached" gestartet wird, wartet das Hauptprogramm
auf das Enden jenes. Es sei denn das Shell-Programm merkt, dass es nicht unter der
Konsole arbeitet.

Wenn ich das Perl-Skript von der Kommandozeile unter Unix starte, "wartet" das Skript auf die Ausgabe der Funktion und gibt die Daten aus.

So tut es auch, wenn es über den Webserver gestartet wird, das von dir beschriebene
Phänomen hat (wahrscheinlich) nicht's damit zu tun.

Rufe ich das Skript jedoch von einer HTML-Seite mittels Button auf, schickt das Perl-Skript zwar eine HTML-Seite zurück, aber leider ohne die Daten des Shell Programms...

Was für eine HTML-Seite? - Ist sie mit Daten gefüllt? - Verwendest du IE (der erstellt
nämlich ein HTML-Dokument, obwohl gar keines empfangen wurde)? - Wie sieht die HTML-Seite
aus (ist sie mit von dir gewolltem Inhalt bestückt, oder leer)? - Wird Browser-Timeout
erreicht? - Wie empfängst du die Daten des Shell-Programmes? - Wenn gar nicht, dann wäre
es möglich, dass die Ausgabe des Shellprogrammes an STDERR gesendet wird[1] und somit von
vom Webserver ggf. nicht an den Client gesendet wird (beachte auch, dass die Ausgabe von
STDOUT gecached ist, jene von STDERR nicht und somit zu Fehlern führen kann, da der
Webserver keinen kompletten HTTP-Header erhält). Hast du einen gültigen HTTP-Header
gesendet? - Stehen Fehlermeldungen in dem log deines Webservers?

=> Fazit: Beschreibe ausführlich und komplett!

[1] es somit auf der Konsole ganz artig funktioniert, jedoch die entsprechende Ausgabe
des Shellprogrammes über HTTP-Request ausgleibt.

Viele Grüsse

Philipp