Hartwig Vogel: Probleme mit SSI

Ich habe folgendes Problem: Ich möchte einen textbasierten Counter mit SSI realisieren.
Der Code des Perlscripts (counting.pl) ist folgender:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hallo vom Counterscript";
$count_file="count.dat";
open(FILE,"<".$count_file);
$anzahl = <FILE>;
close(FILE);
open(FILE,">".$count_file);
$anzahl++;
print FILE $anzahl;
close(FILE);
print $anzahl;
print "\n";
exit(0);

Dazu habe ich eine HTML-Datei (probe.shtml) geschrieben:

<html>
<head>
</head>
<body>
Hallo auf den Webseiten von ... <br>
Sie sehen hier das Dokument <!--#echo var="DOCUMENT_NAME"--> <br>
Letzte Modifikation: <!--#echo var="LAST_MODIFIED"--> <br>
Diese Seite wurde bereits <!--#exec cgi="counting.pl"--> mal besucht.
<br>
Der obige Zähler wurde mit SSI realisiert.
</body>
</html>

Wird die Seite im Browser betrachtet, ergibt sich folgende Ausgabe:

Hallo auf den Webseiten von ...
Sie sehen hier das Dokument probe.shtml
Letzte Modifikation: Thursday, 04-May-2000 10:23:55 MEST
Diese Seite wurde bereits mal besucht.
Der obige Zähler wurde mit SSI realisiert.

-----------------------------------------------------------------------------------------------------

Frage: Warum erhalte ich keine Ausgabe vom Counterskript. Die anderen SSI-Direktiven funktionieren offenbar.
Was mache ich falsch???

  1. Hallo Hartwig!

    Diese Seite wurde bereits <!--#exec cgi="counting.pl"--> mal besucht.

    Dein Script liegt nicht im CGI-Verzeichnis. (Oder liegt Deine HTML-Seite etwa dort???)
    Es muß daraus ausgeführt werden.

    Versuch's mal so, vielleicht läuft es dann.

    Bis denne,
    Dennis

    1. Hallo Dennis,

      vielen Dank. Script und HTML-Seite liegen (nur zu Testzwecken) im CGI-Verzeichnis. Trotzdem funktioniert's
      nicht.

      Hartwig.

      Hallo Hartwig!

      Diese Seite wurde bereits <!--#exec cgi="counting.pl"--> mal besucht.

      Dein Script liegt nicht im CGI-Verzeichnis. (Oder liegt Deine HTML-Seite etwa dort???)
      Es muß daraus ausgeführt werden.

      Versuch's mal so, vielleicht läuft es dann.

      Bis denne,
      Dennis

  2. Hallo,

    [ ] Du darfst bei SSI die exec-Anweisung benutzen?
    [ ] Der SysAdmin hat diese Anweisung gesperrt aus Sicherheitsgruenden...

    Waere das Perlskript fehlerhaft, wuerde dort zumindest eine
    SSI-Fehlermeldung stehen.

    Ciao,
      Wolfgang

    1. Hallo,

      [ ] Du darfst bei SSI die exec-Anweisung benutzen?
      [ ] Der SysAdmin hat diese Anweisung gesperrt aus Sicherheitsgruenden...

      Waere das Perlskript fehlerhaft, wuerde dort zumindest eine
      SSI-Fehlermeldung stehen.

      Ciao,
        Wolfgang

      Danke Wolfgang, das ist wahrscheinlich die Lösung. Ich habe nicht gewusst, dass SSI-Direktiven selektiv gesperrt werden können.

      mfg, Hartwig

      1. [ ] Du darfst bei SSI die exec-Anweisung benutzen?
        [ ] Der SysAdmin hat diese Anweisung gesperrt aus Sicherheitsgruenden...
        Waere das Perlskript fehlerhaft, wuerde dort zumindest eine
        SSI-Fehlermeldung stehen.
        Danke Wolfgang, das ist wahrscheinlich die Lösung. Ich habe nicht gewusst, dass SSI-Direktiven selektiv gesperrt werden können.

        Nicht einzelne Direktiven, aber (bei Apache) CGI separat vom Rest: http://www.teamone.de/selfaktuell/artikel/schroepl02.htm#a6.
        (Eben genau weil CGI bezüglich Security etwas Anderes ist als ein Include eines Strings.)

  3. Hallo Hartwig,

    ich denke, Wolfgang hat wahrscheinlich recht. Auf dem Server werden die sogenannten "unsicheren" SSI-Befehle deaktiviert sein.
    Zur Sicherheit solltest Du aber vielleicht nochmal versuchen, die Seite aus Deinem Hauptverzeichnis aufrufen und den SSI-Pfad anpassen --> virtual="/cgi-bin/counter.pl" - oder mal mit dem kompletten Pfad --> file="http://www.deinedomain.de/cgi-bin/counter.pl".

    Du kannst allerdings auch als Denkansatz mal meinen Minicounter runterladen, dieser ist zwar weit weg von gut, läuft aber und braucht vorallem kein SSI beim Aufruf.
    < http://www.jensirrgang.de/download.shtml>

    Unter zwei Bedingungen allerdings ;-):
    1. Keinen Ton über das Homepagedesign, ist nur auf die schnelle entstanden, es dauerte länger als das Script zu schreiben.

    2. Info‚s über die Änderungen

    Bitte lies die kleine Infodatei die im Zip ist. Dort ist auch der Code für das Einbinden in die Seite vorgesehen. Allerdings funktioniert dieses Prinzip des Zählers nicht bei abgeschaltetem JavaScript oder bei diesen Webwashern, welche die Popupfenster verhindern. Auf meiner Startseite ist er installiert. Dort kannst Du sehen, wie er funktioniert. Und nochmal, kein Ton über das Design ;-)