PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cgi in Homeverzeichnissen ausführen



Elmar
18.09.02, 18:59
Hallo,

ich bin schon lange am Basteln, aber leider ratlos.
System Suse 8.0: Apache 1.3.23
Habe ein Mini-cgi zum Testen:


#!/usr/bin/perl -w
use CGI; # CGI-Routinen laden.
$q = new CGI; # Neues CGI-Objekt erzeugen.
print $q->header, # HTTP-Header generieren.
$q->start_html('Hallo Welt'), # HTML einleiten.
$q->h1('Hallo Welt'), # Level-1-Header
$q->end_html; # HTML abschließen.


Das gibt aus: Hallo Welt
(in /usr/local/httpd/cgi-bin)

Das funktioniert wunderbar.
Wenn ich das aber nun im Homeverzeichnis eines Users ausführen will kommt folgendes:

Premature end of script headers: /home/elmar/public_html/cgi-bin/welt.cgi

Ich kenne die Fehlermeldung vom Setzen falscher Attribute, z.B. cgi-bin/test (und eines oder beide Verzeichnisse auf 777)

Aber:
- Upload im des Scripts ASCII-Mode (auch per Konsole testweise das funktionierende Script rüberkopiert)
- im Verzeichnis .../public_html das Directory cgi-bin erstellt und 755 gesetzt, ebenso das welt.cgi
- in der suse_public_html.conf folgendes eingetragen: (auch testweise in der httpd.conf), aber beides fruchtlos

<Directory /home/*/public_html/cgi-bin>
Options +ExecCGI
SetHandler cgi-script
</Directory>

- perl welt.cgi gibt mit den html-Code von "Hallo Welt" aus, also ohne Fehlermeldung :(

Tja, bin leider etwas ratlos..... Danke für die Hilfe

Bauchi
18.09.02, 23:48
also .. premature end of script headers ... das hätte dir sicher auch google lösen können oder der button oben rechts im board auf dem SUCHEN steht ...

das problem ist das die datei sicher unter ner M$oft Plattform erstellt wurde und dann geuppt... ein dos2unix oder ein tr -d "\r" <infile >outfile sollte dir helfen ...

Elmar
19.09.02, 05:14
Nein, es geht auch nicht. Habe ja bereits beschrieben, dass das Script im anderen Verzeichnis geht und von dort habe ich es rüberkopiert. Das muss eine andere Ursache haben.

michael.sprick
19.09.02, 14:41
Du kannst um noch detailliertere Errorlogs zu machen das -w gegen -W (also gross) ersetzen...

aber die Apache Konfig kenne ich so nicht...

versuch mal statt
SetHandler...

AddHandler cgi-script .cgi

premature end of script headers kann ungefähr alles heissen...

Elmar
19.09.02, 15:01
Ob perl -w oder perl -W: IN der Konsole wird das Script ja fehlerfrei ausgeführt, aber nicht durch Aufruf durch den Browser, also kommt keine Fehlermeldung, sondern der Quellcode:



galaxia:/home/elmar/public_html/cgi-bin # perl welt.cgi
Content-Type: text/html; charset=ISO-8859-1

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"><head><title>Hallo Welt</title>
</head><body><h1>Hallo Welt</h1></body></html>


Die Configänderung brachte leider auch nix .(

Jasper
19.09.02, 15:10
Original geschrieben von Elmar
Premature end of script headers: /home/elmar/public_html/cgi-bin/welt.cgi


sieh ins error.log vom apache. sieht so aus, als ob das skript eine fehlermeldung zurückgibt, die schwerlich als ein korrekter http-header durchgehen kann.

-j

Elmar
19.09.02, 15:16
Der Text *ist* aus dem Error-log. Mehr steht da leider nicht drin.

Das liegt nicht am Header. Das cgi läuft ja (im anderen Dir und per perl welt.cgi)