Alex Brem: Server Side Includes: Problem mit #exec

Beitrag lesen

hi!

Ich rufe in der HTML-Datei test.shtml ein Perl-Skript auf, und zwar via folgender Zeile:
<!--#exec cgi="/cgi-bin/count.pl?file=/http-data/top/www-root/test/test.shtml&expr=<li>"-->

Das Skript soll die Vorkommen des Ausdruckes <expr> in der Datei <file> zählen und als einfachen Text zurückliefern. Aber das ist nicht das Problem, sondern dass der Aufruf des CGI-Skripts anscheinend nicht funktioniert. Als HTML-Ausgabe erscheint folgende Zeile:
[an error occurred while processing this directive]
<!--#exec cgi="/cgi-bin/count.pl?file=/http-data/top/www-root/test/test.shtml&expr=<li>"-->

Und das Logfile meint folgendes dazu:
invalid CGI ref /cgi-bin/count.pl?file=/http-data/top/www-root/test/test.shtml&expr=<li> in /http-data/top/www-root//test/test.shtml

Zweite Frage: Wie muss das CGI-Skript den String denn genau ausgeben? Reicht dann ein einfaches "print $i;", oder muss ein "Content-Type" mit angegeben werden und welcher?

bye, Frank!

hallo frank!

mit SSI's gibts je nach web server jede menge probleme.. probier zuerst vielleicht mal, den
allerersten slash wegzulassen, also:
<!--#exec cgi="cgi-bin/count.pl?file=/http-data/top/www-root/test/test.shtml&expr=<li>"-->
meist liegt das problem an einer falschen konfiguration des web servers. ich hatte aber schon
probleme sowohl mit dem fast track als auch mit appache. beim omni httpd klappts ohne größere einstellungen. oft hilft auch das einbinden mit <--#include file="/cgi-bin/count.pl...."-->
man beachte hier wieder den aller ersten slash. (normalerweise sollte dieser tag das file auflisten, aber ich hatte schon einen web server, bei dem man es so einbinden musste).
vergiss bitte auch nicht, daß du viele sonderzeichen bei der parameterübergabe kodieren musst
(näheres findest du in selfhtml)

zu frage 2:
du musst auf jeden fall den standart html Content Type ausgeben (auch bei SSI's):
print "Content-type: text/html\n\n";

viele grüße, alex