CGI nicht in SHTML

Hallo Perl-Freaks,

ich bin ziemlich verzweifelt, da ich ein Problem beim Betrieb von CGI mit SSI habe, das ich nicht gelöst bekomme.
Und zwar habe ich eine Homepage auf einem Telekom (DT Web Services) Unix-Server. CGI-Skripte funktionieren auch ohne Probleme, allerdings schaffe ich es nicht, CGIs in SHTML-Dateien einzubinden - dort erscheint immer der Fehler „[an error occurred while processing this directive]“, obwohl SSI ansonsten auch klappt.
Die Sache ist folgende: der Server ist so aufgeteilt, dass die Seiten unter /pages/ und die Skripte unter /cgi-bin/ liegen (reale Pfade).
Im Internet selbst ist aber das CGI-Verzeichnis nur über
http://cgi.domain.com/cgi-bin/skript.cgi erreichbar, die normalen Seiten logischerweise unter http://www.domain.com/seite.shtml.
Da man ja keine kompletten Pfade (http://…) bei der Einbindung von Dateien mittels SSI benutzen darf, weiß ich jetzt nicht, welchen Pfad ich angeben muss. Ich habe eigentlich alles probiert - von …/cgi-bin/ über /cgi-bin/ über die kompletten Pfade, alles, was mir einfiel.

Was kann ich machen? Das CGI-Skript selber funktioniert einwandfrei - ich habe es auf einem anderen Server getestet. Und ich habe jetzt die Seite so gemacht, dass sämtliche Kopf- und Fuß-Daten über CGI eingebunden werden.
Vielleicht hatte ja schon mal jemand das selbe Problem oder benutzt auch einen T-Mart-Webserver - ich würde mich über jeden noch so kleinen Tipp freuen!!!

Frohe Pfingsten,

Thomas

Die Sache ist folgende: der Server ist so aufgeteilt, dass die
Seiten unter /pages/ und die Skripte unter /cgi-bin/ liegen
(reale Pfade).

Das spricht für einen korrekte, weil Sicherheitsbewußte Konfiguration des Servers

Im Internet selbst ist aber das CGI-Verzeichnis nur über
http://cgi.domain.com/cgi-bin/skript.cgi erreichbar, die

So soll es sein … oder häufig über http://www.domain.com/cgi-bin/skript.cgi - das Verzeichnis cgi-bin ist als Alias angelegt.

Da man ja keine kompletten Pfade (http://…) bei der
Einbindung von Dateien mittels SSI benutzen darf, weiß ich

korrekt - es heißt ja auch Server Side Include und nicht http side include :smile:

jetzt nicht, welchen Pfad ich angeben muss. Ich habe
eigentlich alles probiert - von …/cgi-bin/ über /cgi-bin/
über die kompletten Pfade, alles, was mir einfiel.

Versuch es so:

(das Leerzeichen vor --> nicht vergessen)

Klaus

Funktionierte nicht…
Hi Klaus,

vielen Dank für die prompte Antwort - leider hat dein Tipp auch nicht geholfen.
Ich habe jetzt mal versucht, eine ganz normale Text-Datei aus dem CGI-Verzeichnis einzufügen mittels include virtual… und das bringt diesselbe Fehlermeldung - könnte es sein, dass man da doch einen anderen Pfad auf dem Server angeben muss? Wie gesagt, die /pages und /cgi-bin/ - Pfade stehen auf dem Datenblatt…

Viele Grüße vom immer noch verzweifelten

THOMAS

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich habe jetzt mal versucht, eine ganz normale Text-Datei aus
dem CGI-Verzeichnis einzufügen mittels include virtual… und
das bringt diesselbe Fehlermeldung - könnte es sein, dass man
da doch einen anderen Pfad auf dem Server angeben muss? Wie
gesagt, die /pages und /cgi-bin/ - Pfade stehen auf dem
Datenblatt…

hmmm, im Moment fällt mir dazu auch nicht mehr ein - schonmal die FAQ des ISP durchgesehen, bzw. bei deren Support angefragt?

Klaus

Hi Klaus,

das ist ja genau das Problem: beim Support des T-Mart Webservice ist dieses Wochenende nur ein Mann, der keine Ahnung davon hat und ich soll warten bis Dienstag.
Ich bin mittlerweile zur Erkenntnis gekommen, dass das wahrscheinlich nur die falschen absoluten Pfade sind, die mir vorliegen - dass also vor /pages bzw. vor /cgi-bin/ noch was fehlt und das auch das eigentliche Problem ist.
Ich kann eine Text-datei z.B. einbinden, indem ich include virtual=…/text.txt eingebe, aber nicht, wenn ich include virtual=/text.txt benutze - obwohl sie sich im obersten Verzeichnis der HTML-Dateien liegt.
Aber noch nicht mal das konnte mir der Mann an der Hotline beantworten, obwohl das ja grundsätzlich nichts „fachliches“ ist.

Und die FAQs von der Telekom sind mehr als spärlich, die bringen mir gar nix.

Vielen Dank für deine Hilfe!

DANIEL

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

nicht verwirrt sein…
Sei bitte nicht verwirrt darüber, dass ich plötzlich „Daniel“ heiße, wir arbeiten zu zweit an dem Problem…

Daniel

Pfad über CGI bestimmen??
Gibt es nicht zufällig die Möglichkeit, den absoluten Pfad mit einem kleinen CGI-Skript herauszubekommen? Normale Skripte kann ich schließlich ausführen…!

DANIEL

vorliegen - dass also vor /pages bzw. vor /cgi-bin/ noch was
fehlt und das auch das eigentliche Problem ist.
Ich kann eine Text-datei z.B. einbinden, indem ich include
virtual=…/text.txt eingebe, aber nicht, wenn ich include
virtual=/text.txt benutze - obwohl sie sich im obersten
Verzeichnis der HTML-Dateien liegt.

Versuch doch mal den absoluten Server Pfad anzugeben (etas in der Art /home/yourdomain/www/text.txt) und wenn Du ihn nicht weißt, dann bekommst Du ihn mit folgemdem Script raus:

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";
print "Environment Variables\n

";
foreach $key (keys(%ENV)) {
print „- $key: $ENV{$key}\n“;
}
print "

\n";

Schau nach der Variable DOCUMENT_ROOT

Klaus

natürlich nicht enthalten!
Hi Klaus,

ich habe das Skript, wie du es geraten hast, hochgeladen, aber natürlich ist DOCUMENT_ROOT die einzige Variable, wo nichts angegeben ist…!
Hier ist eine Übersicht über die Variablen, die ausgegeben wurden:

SERVER_SOFTWARE: Netscape-Enterprise/3.6 SP1
GATEWAY_INTERFACE: CGI/1.1
DOCUMENT_ROOT:
REMOTE_ADDR: 172.177.165.28
SERVER_PROTOCOL: HTTP/1.1
REQUEST_METHOD: GET
REMOTE_HOST: 172.177.165.28
PATH: /bin
HTTP_ACCEPT: */*
HTTP_CONNECTION: Keep-Alive
SCRIPT_NAME: /cgi-bin/test.cgi
SCRIPT_FILENAME: /cgi-bin/test.cgi
SERVER_NAME: cgi
HTTP_PATH_INFO: /test.cgi
SERVER_PORT: 80
HTTP_HOST: cgi.hoehner.com
HTTP_PATH_TRANSLATED: /export/1/1/5/0/15074/test.cgi

Kannst du da was anfangen? Ich hatte mal versucht, das letzte (HTTP_PATH TRANSLATED) anzugeben bei der SSI-Anweisung, hat aber wieder nur den Error gebracht…
Ich verzweifle langsam wirklich. Es muss doch eine Möglichkeit geben, die Pfade herauszubekommen!!!

Vielen Dank für deine Mühe!

Thomas

cbox-CGI-Interpreter???
Hi Klaus,

eben habe ich durch Zufall ein Skript aufgerufen, das nicht auf dem Server vorhanden ist.
Die Fehlermeldung hat mich doch einigermaßen überrascht.
Hier kannst du es dir angucken: http://cgi.hoehner.com/cgi-bin/test.cgi
Da steht, dass die irgendso einen Perl-Interpreter namens Sbox installiert haben (mit Link zu http://stein.cshl.org/~lstein/sbox/), wodurch sich wohl die Pfade ändern - kennst du dieses Programm oder kannst du aus der Meldung bzw. der Seite etwas mehr lesen als ich? Der Pfad, der unmittelbar in der Fehlermeldung erscheint (/export/1/1/5/0/15074/cgi-bin/script.cgi) lässt leider auch in der SSI-Anweisung den Error erscheinen…

Gruß Thomas

(/export/1/1/5/0/15074/cgi-bin/script.cgi) lässt leider auch

tja, die Scripts laufen unter einem Wrapper, der verschiedene Sicherheitsmechanismen zur Verfügung stellt. Ohne Kenntnis der Konfiguration kommen wir da nicht weiter. Also nochmal, auch wenn’s schmerzt: Morgen den Support anrufen

Klaus

vielen Dank
Hi Klaus,

vielen Dank für deine Geduld und deine vielen Tipps!
Ich hoffe, dass ich nach dem Anruf bei der Telekomhotline schlauer bin.

Schönen Pfingstmontag noch,

Thomas