Hoscha: Fehlermeldung: Premature end of script headers: printer.pl

Einen wunderschönen guten Morgen,
[der Morgen wäre noch viel schöner, wenn ich das folgende Problem gelöst hätte, und es ist nicht so trivial wie es zunächst den Anschein hat]

Ich muss mit einem Perl-Skript auf eine Datenbank zugreifen, die auf LDAP basiert.
Dazu hat unser Admin das LDAP-Modul für Perl installiert und auch ssl mit eingebunden.
Anfangs trat dabei folgender Fehler auf:
Can't load '/opt/perl/lib/site_perl/5.6.1/PA-RISC1.1-thread-multi/auto/Mozilla/LDAP/API/API.sl' for module Mozilla::LDAP::API:
Permission denied at /opt/perl/lib/5.6.1/PA-RISC1.1-thread-multi/DynaLoader.pm line 206.

Dabei stimmen alle Pemissions auf unserer Unix-Kiste.

Seit eine neue Perl-Version installiert wurde, tritt anstelle dieses Fehlers eine neue Fehlermeldung auf:
Premature end of script headers: printer.pl
Klingt ja eigentlich sehr leicht lösbar, doch ich finde die Lösung nicht. Exakt das gleiche Skript hat ja nun schonmal getan und die oben genannten Fehlermeldungen ausgespuckt!

Nun meine Frage: Welche Fehlerquellen kommen beim "premature end..." alles in betracht?

Viele Grüße,
Holger

  1. Hallo,

    Can't load '/opt/perl/lib/site_perl/5.6.1/PA-RISC1.1-thread-multi/auto/Mozilla/LDAP/API/API.sl' for module Mozilla::LDAP::API:

    Das wird daran liegen, daß die besagte API.sl ihrerseits eine library braucht, die nichtda ist. AFAIK benötigt dieses Modul noch irgendeine Netscape-Bibliothek, die afaik im LDAP-SDK enthalten ist, ich weiß allerdings momentan nicht, wo Du die herbekommen kannst. Ich verwende für LDAP immer noch das andere verfügbare Modul, welches ein reines Perl-Modul ist (aner auch langsamer).

    Nun meine Frage: Welche Fehlerquellen kommen beim "premature end..." alles in betracht?

    Das ist eine Fehlermeldung, die vom Webserver kommt Meist dann, wenn das   Script keine Ausgaben an STDOUT mahct, was beispielsweise passiert, wenn beim Module einbinden etwas schief geht. Die Perlfehlermeldungen findest Du dann im Apache-Error-Log. Du solltest beio solchen Fällen das script zuerst über eine shell testen. Das ist wesentlcih einfach, als ständig den Request zu senden, und dann erst im Errorlog nachzusehen, was nicht funktioniert hat.

    Grüße
      Klaus

    1. Hallo Klaus

      Das ist eine Fehlermeldung, die vom Webserver kommt Meist dann, wenn das   Script keine Ausgaben an STDOUT mahct, was beispielsweise passiert, wenn beim Module einbinden etwas schief geht. Die Perlfehlermeldungen findest Du dann im Apache-Error-Log. Du solltest beio solchen Fällen das script zuerst über eine shell testen. Das ist wesentlcih einfach, als ständig den Request zu senden, und dann erst im Errorlog nachzusehen, was nicht funktioniert hat.

      Vielen Dank, habe deinen Tip an den Admin weitergeleitet. Mittlerweile sitzen dort zwei fähige Personen seit zwei Wochen an diesem Problem.

      Der Fehler "premature end.." ist doch sicherlich als ein Fortschritt zu deuten, wenn man es mit der vorherigen Fehlermeldung vergleicht.

      Grüße,
      Holger

  2. Seit eine neue Perl-Version installiert wurde, tritt anstelle dieses Fehlers eine neue Fehlermeldung auf:
    Premature end of script headers: printer.pl

    Nun meine Frage: Welche Fehlerquellen kommen beim "premature end..." alles in betracht?

    Ganz einfach: Dein Skript hat keine HTTP-Kopfzeile(n) ausgegeben. Der Server erwartet, daß das Skript eine (fast) vollständige HTTP-Antwort ausgibt, also mindestens

    Content-Type: bla/bla
      [hier eine Leerzeile]

    Fehlt das, meldet er Dir, daß der Kopf zu früh zu Ende war ("premature end of [..] headers").

    Diese Feststellung wird Dir aber nicht sonderlich weiterhelfen, denn sie besagt letztenendes nur, daß das Skript abgebrochen wurde, bevor es irgendwas ausgeben konnte. Oder garnicht erst gestartet ist.

    Gruß,
      soenk.e

    1. Vielen Dank an alle, die mir geholfen haben.

      Letztendlich hat sich etwas ganz anderes als Fehler herausgestellt:
      Das perl_LDAP Modul hat einen kleinen Fehler in einem Verweis gehabt!!! Sehr sehr ärgerlich, aber das sind einfach die Nachteile, wenn man es mit Open Source Code zu tun hat!
      Ich möchte nicht wissen, wie viele Menschen weltweit an diesem Problem scheiterten, nur weil sich der Autor des Quelltextes sich verschrieben hat.

      Wem es interessiert, oder wer dasselbe Problem hatte, kann sich gerne an mich wenden, ich werde dann noch einmal bei unserem Admin nachfragen.
      Sorry, dass ich jetzt in diesem Posting nicht die genaue Korrektur geben kann.

      Viele Grüße,

      Holger *dersehrerleichertist*

  3. Hi Holger,

    Nun meine Frage: Welche Fehlerquellen kommen beim
    "premature end..." alles in betracht?

    Nicht-Verwendung von

    use CGI::Carp qw(fatalsToBrowser);

    während der Testphase eines Skripts?

    Viele Grüße
          Michael