Chris: SSI not world executable

Hi,

kann mir mal bitte jemand erklären, was dem Webserver nicht passt, wenn er folgende SHTML-Datei 'not world executable' findet?:

<html>
<head>
</head>
<body>
Hier:<br>
<!--#exec cgi="http://www.server.de/cgi-bin/test.pl" -->
</body>
</html>

Das test.pl-Skript erzeugt einen einwandfreien Output mit Content-Type-Header und allem drum und dran.

TIA

Chris

  1. Sup!

    Vielleicht ist der Mode nicht 755?

    Gruesse,

    Bio

    1. Hi,

      Vielleicht ist der Mode nicht 755?

      Wird vom Server automatisch gesetzt, also gehe ich mal naiverweise davon aus, daß er es automatisch richtig macht...

      Chris

  2. kann mir mal bitte jemand erklären, was dem Webserver nicht passt, wenn er folgende SHTML-Datei 'not world executable' findet?:

    <!--#exec cgi="http://www.server.de/cgi-bin/test.pl" -->

    Diese Anweisung macht nicht soviel Sinn. Oder erwartest Du tatsächlich, daß der Webserver ein Programm auf einem fremden Server ausführt?

    Gruß,
      soenk.e

    PS: Bevor Du versuchst, exec einfach durch das hier eigentlich sinnvollere include zu ersetzen, lies die Anleitung. include funktioniert auch nur auf dem eigenen Server.

    1. kann mir mal bitte jemand erklären, was dem Webserver nicht passt, wenn er folgende SHTML-Datei 'not world executable' findet?:

      <!--#exec cgi="http://www.server.de/cgi-bin/test.pl" -->

      PS: Bevor Du versuchst, exec einfach durch das hier eigentlich sinnvollere include zu ersetzen, lies die Anleitung. include funktioniert auch nur auf dem eigenen Server.

      Nachtrag: Wenn server.de die Maschine ist, auf der auch das SSI-Dokument liegt, müßte es etwas in der Richtung

      <!--#exec cgi="cgi-bin/test.pl" -->

      sein. Der http://www.server.de-Teil macht ein SSI-exec oder -include in jedem Fall unbrauchbar.

      Gruß,
        soenk.e

    2. Hi,

      Diese Anweisung macht nicht soviel Sinn. Oder erwartest Du tatsächlich, daß der Webserver ein Programm auf einem fremden Server ausführt?

      Das Skript liegt auf dem selben Server, ich hatte nur die komplette Adresse angegeben.

      Wenn ich den relativen Pfad angebe, erhalte ich nun den Fehler:

      exec of /htdocs/www/cgi-bin/ssitest.shtml failed (Exec format error)

      PS: Bevor Du versuchst, exec einfach durch das hier eigentlich sinnvollere include zu ersetzen,
      lies die Anleitung. include funktioniert auch nur auf dem eigenen Server.

      Wieso soll iclude hier funktionieren? AFAIK gibt include den _Inhalt_ einer Datei aus. (http://selfhtml.teamone.de/cgiperl/intro/ssi.htm#uebersicht). Ich will dedoch die _Ausgabe_ des Skriptes.

      TIA

      Chris

      1. Wenn ich den relativen Pfad angebe, erhalte ich nun den Fehler:

        exec of /htdocs/www/cgi-bin/ssitest.shtml failed (Exec format error)

        Hoppla? Mit welcher Zeile hast Du denn das aufgerufen, das sieht von hier so aus, als wenn Du versuchst ssitest.shtml statt test.pl auszuführen.
        Und wenn ich mich recht entsinne, haben andere Dateien als Skripte (also auch .shtml-Sachen) in cgi-bin eh nichts zu suchen, aber da kann ich mich auch irren.

        Kannst Du das Skript (also test.pl) denn überhaupt im Browser aufrufen?

        Wieso soll iclude hier funktionieren? AFAIK gibt include den _Inhalt_ einer Datei aus. (http://selfhtml.teamone.de/cgiperl/intro/ssi.htm#uebersicht). Ich will dedoch die _Ausgabe_ des Skriptes.

        Nein, das ist falsch, besorg Dir lieber die Originalanleitung zum Webserver. Zumindest beim Apache wird alles, was Du mit include reinholst, ganz normal durch die Maschinerie gewalzt, d.h. es passiert genau das, was auch passiert, wenn Du die Datei über einen Webbrowser holen würdest.

        Und dort heißt es sogar ganz explizit "The include virtual element should be used in preference to exec cgi.".

        Gruß,
          soenk.e

        1. Hi,

          exec of /htdocs/www/cgi-bin/ssitest.shtml failed (Exec format error)

          Hoppla? Mit welcher Zeile hast Du denn das aufgerufen, das sieht von hier so aus, als wenn Du versuchst ssitest.shtml statt test.pl auszuführen.

          Ich habe ssitest.shtml im Browser aufgerufen

          Und wenn ich mich recht entsinne, haben andere Dateien als Skripte (also auch .shtml-Sachen) in cgi-bin eh nichts zu suchen, aber da kann ich mich auch irren.

          Außerhalb des cgi-bin's gibt er mir nur den Quelltext der SHTML-Seite zurück. (Womit sich das, was ich eigentlich vorhatte, ohnehin erledigt hatte)

          Kannst Du das Skript (also test.pl) denn überhaupt im Browser aufrufen?

          Ja.

          Und dort heißt es sogar ganz explizit "The include virtual element should be used in preference to exec cgi.".

          Ich hab jetzt sowohl exec cgi, als auch include virtual und include file probiert, gibt immer den gleichen Fehler zurück (siehe oben).
          Übrigens unabhängig, ob ich die SHTML-Datei im ASCII- oder Binärmodus aufspiele.

          Chris

          1. Moin!

            Und wenn ich mich recht entsinne, haben andere Dateien als Skripte (also auch .shtml-Sachen) in cgi-bin eh nichts zu suchen, aber da kann ich mich auch irren.

            Außerhalb des cgi-bin's gibt er mir nur den Quelltext der SHTML-Seite zurück. (Womit sich das, was ich eigentlich vorhatte, ohnehin erledigt hatte)

            Ahaaaaa! Ein Indiz.

            Scheint, dein Webserver ist falsch konfiguriert! Gewöhnlicherweise funktionieren SSIs (also *.shtm/*.shtml) nur außerhalb des CGI-BINs, und Skripte nur innerhalb. Wenn also dein SSI außerhalb nicht funktioniert, dann wird es auch innerhalb vermutlich einfach fehlinterpretiert, weil es eben kein gültiges (Shell-/Perl-/Python-/Wasauchimmer-)Skript ist, sondern eben HTML.

            Kannst Du das Skript (also test.pl) denn überhaupt im Browser aufrufen?

            Ja.

            Das deutet noch viel mehr auf dieses Problem hin...

            Du mußt deinen Webserver also richtig konfigurieren, so daß er die Dateiendung shtm oder shtml mit "SSI ausführen" verbindet.

            Lies dazu die Apache-Doku und deren FAQ: http://httpd.apache.org/docs/misc/FAQ-F.html
            "How do I enable SSI?"

            - Sven Rautenberg

            1. Hi,

              Scheint, dein Webserver ist falsch konfiguriert! Gewöhnlicherweise funktionieren SSIs (also *.shtm/*.shtml) nur außerhalb des CGI-BINs, und Skripte nur innerhalb. Wenn also dein SSI außerhalb nicht funktioniert, dann wird es auch innerhalb vermutlich einfach fehlinterpretiert, weil es eben kein gültiges (Shell-/Perl-/Python-/Wasauchimmer-)Skript ist, sondern eben HTML.

              Du mußt deinen Webserver also richtig konfigurieren, so daß er die Dateiendung shtm oder shtml mit "SSI ausführen" verbindet.

              Na, dann werde ich das mal meinem Provider schreiben, daß er da mal nachschauen soll.

              Danke für die Hilfe.

              Chris

              1. Moin nochmal!

                Na, dann werde ich das mal meinem Provider schreiben, daß er da mal nachschauen soll.

                Zumindest wird der Provider wissen, ob SSI geht, und wenn ja, wie. Und er kann dir vielleicht auch viel schneller sagen, wie es auf seinem Server funktioniert. Eventuell sind nämlich Features wie exec auch abgestellt, so daß du zwingend include benutzen mußt.

                - Sven Rautenberg

                1. Hi,

                  Zumindest wird der Provider wissen, ob SSI geht, und wenn ja, wie. Und er kann dir vielleicht auch viel schneller sagen, wie es auf seinem Server funktioniert. Eventuell sind nämlich Features wie exec auch abgestellt, so daß du zwingend include benutzen mußt.

                  Der Oster-Support von Kontent hat mir jetzt mitgeteilt, daß SSI nicht unterstützt wird, es aber mit PHP folgendermaßen geht:

                  <?php
                  virtual('/cgi-bin/DATEI.cgi');
                  ?>

                  Und das funktioniert auch.

                  Ich werde doch noch irgendwann PHP lernen müssen...

      2. Hi Chris,

        exec of /htdocs/www/cgi-bin/ssitest.shtml failed
        (Exec format error)

        was will Dir diese Meldung sagen?

        Der Webserver hat versucht, Deine SSI-Datei _auszuführen_, nicht etwa, sie durch den SSI-Interpreter zu jagen.

        Das liegt meiner Meinung nach daran, daß Du ein "normales" CGI-Verzeichnis hast - will sagen: Eines, das mit der Apache-Direktive "ScriptAlias" definiert wurde.
        _Jedes_ Dokument innerhalb dieses Teilbaums wird in diesem Falle als CGI-Skript angesehen. Du kannst in einem solchen CGI-Verzeichnis nichts verwenden außer CGI-Skripten - keine HTML-Dokumente, keine Bilder, kein SSI.

        Lies Dir mal
           http://aktuell.de.selfhtml.org/artikel/cgiperl/inbetriebnahme/#a6

        durch, um eine alternative CGI-Einbindungsmethode zu lernen.

        Das, was Du willst, kann in einem /cgi-bin normaler Machart nicht funktionieren. Und wenn Dein Provider Dir nicht mehr als dies erlaubt, hast Du verloren.

        Viele Grüße
              Michael