Web-Server Apache
Christoph Schnauß
tach :-)
ich hab gesehen, daß schon ab und an mal was zum Apache gesagt wurde, deshalb trau ich mich.
Es geht um folgendes Problem: Unter LINUX kenn ich ihn schon lange und habe gute Erfahrungen damit, jetzt hab ich aber Anlaß, ihn auch auf einem Win98-Rechner einzusetzen, und da macht er nicht alles. Ich habe die Version 1.3.6 (ist, glaube ich, die aktuelle) installiert, und ich kann auch auf HTML-Seiten auf meinen Rechnern zugreifen. Aber das cgi-Verzeichnis wird mir immer als "forbidden" angezeigt, bzw. "you don't have Access" oder so, und inzwischen ärgert mich das heftig, weil ich nur deswegen überhaupt mein schönes LINUX ab und an verlasse, um unter Win9x ein paar scripts zu testen und durchzuspielen.
Ich weiß, irgendwo in der http.conf muß ich was falsch machen, aber das gute Stück ist zu lang, um es hier zu posten, und vielleicht weiß auch so schon jemand, wie es geht.
Besten Dank im voraus
Christoph S.
hye
Ich weiß, irgendwo in der http.conf muß ich was falsch machen, aber das gute Stück ist zu lang, um es hier zu posten, und vielleicht weiß auch so schon jemand, wie es geht.
du liegst richtig.
ich nehme mal an du hast deine scripts nicht unterhalb des apache directories. so war es jedenfalls bei mir.
folgende musst du ändern:
<Directory "c:/home/pages">
# Options Indexes FollowSymLinks
diese letzte zeile verhindert das ausbrechen aus der normalen root. deshalb ersetzten durch:
Options All
da du wie du gesagt hast ja nur nen localhost betreibst, ist diese einstellung ok. ansonsten musst du wegen der sicherheit ein wenig basteln.
hoffe ich konnte dir helfen
cu
Bogus
folgende musst du ändern:
<schnipp>
# Options Indexes FollowSymLinks
diese letzte zeile verhindert das ausbrechen aus der normalen root. deshalb ersetzten durch:
Options Allda du wie du gesagt hast ja nur nen localhost betreibst, ist diese einstellung ok. ansonsten musst du wegen der sicherheit ein wenig basteln.
hoffe ich konnte dir helfen
cu
Bogus
ups, das ging ja fix, besten Dank. Hilft aber leider nicht, das steht schon da. Ich habe an den drei Stellen, an denen diese Option eingetragen werden muß/kann, jeweils alle erlaubten Kombinationen durchgespielt, immer mit dem gleichen negativen Ergebnis.
Richtig ist, daß ich nur den localhost durchspielen will, um scripts zu testen, und richtig ist auch, daß die scripts nicht unterhalb des Apache Directories liegen.
Ich bin in einer der linux-newsgroups darauf hingewiesen worden, daß ich im allerletzten <VirtualHost>-Abschnitt auch noch Options angeben sollte. Ebenfalls ohne Effekt, und was mich am meisten ärgert ist, daß das Pendant unter LINUX (Version 1.3.3) brav alle scripts zaubern läßt, was sie nur wollen.
ja, und nun ?
Christoph S.
# Options Indexes FollowSymLinks
Options All
ups, das ging ja fix, besten Dank. Hilft aber leider nicht, das steht schon da. Ich habe an den drei Stellen, an denen diese Option eingetragen werden muß/kann, jeweils alle erlaubten Kombinationen durchgespielt, immer mit dem gleichen negativen Ergebnis.
Was Du brauchst, ist eine Definition Deines Verzeichnisses - egal, wo es liegt - als CGI-Verzeichnis oder als ein Verzeichnis, in welchem bestimmte Endungen als CGI-Skripts erkannt werden (die zweie Möglichkeit bevorzuge ich).
ScriptAlias /cgi-bin/ "c:/produktname"
Alias /produktname "c:/produktname"
<Directory "c:/produktname">
AddHandler cgi-script .pl
</Directory>
Beachte, daß Apache Pfadnamen auch auf Windows mit "/" statt "" getrennt haben will - so steht es jedenfalls im Handbuch, glaube ich, vielleicht funktioniert sogar beides.
Das ist aber m. E. der einzige Unterschied zu Deiner Konfiguration unter Linux ... ansonsten sollte die hier nämlich genauso funktionieren.
Aber das cgi-Verzeichnis wird mir immer als "forbidden" angezeigt, bzw. "you don't have Access" oder so, und inzwischen ärgert mich das heftig, weil ich nur deswegen überhaupt mein schönes LINUX ab und an verlasse, um unter Win9x ein paar scripts zu testen und durchzuspielen.
Hm, beim zweiten Lesen fällt mir auf, daß Du ja gar nicht sagst, daß die CGI-Skripts nicht funktionieren. Versuchst Du etwa wirklich das CGI-Verzeichnis per directory browsing anzusprechen? Also "http;//localhost/cgi-bin/"?
*Das* darf nicht gehen - würde man ein cgi-bin browsen können, dann könnte man sämtliche CGI-Anwendungen darin sehen, und der Zugang zu diesen könnte ja über entsprechend geschützte Formulare vorgesehen sein. Das wäre eine Sicherheitslücke.
Du mußt schon die exakte URL Deines Skripts angeben, wenn Du es starten willst.
Hm, beim zweiten Lesen fällt mir auf, daß Du ja gar nicht sagst, daß die CGI-Skripts nicht funktionieren. Versuchst Du etwa wirklich das CGI-Verzeichnis per directory browsing anzusprechen? Also "http;//localhost/cgi-bin/"?
*Das* darf nicht gehen - würde man ein cgi-bin browsen können, dann könnte man sämtliche CGI-Anwendungen darin sehen, und der Zugang zu diesen könnte ja über entsprechend geschützte Formulare vorgesehen sein. Das wäre eine Sicherheitslücke.
Du mußt schon die exakte URL Deines Skripts angeben, wenn Du es starten willst.
ich habe bereits angedeutet, daß ich, wenn ich meinen LINUX-Rechner als host-Rechner nehme, alles prima läuft. Ich bin aber durch bestimmte Umstände gezwungen, auch einen Win9x-Rechner als "host" einzurichten, und ich wollte bestimmt nicht die FrontPage-Servererweiterungen dazu nehmen (muß ich das begründen ?), der Apache bietet sich einfach an, weil er "eigentlich" wirklich sehr solide ist. Nun kann ich aber ein script, das unter Linux tadellos funktioniert, nicht unverändert auf den Win-Rechner kopieren, das siehst du schon an der ersten Zeile:
#!usr/bin/perl
funzt halt bei Windows selten ...
Ich habe meines Wissens die korrekten Pfadangaben gemacht.
schönste Grüße
Christoph S.
Nun kann ich aber ein script, das unter Linux tadellos funktioniert, nicht unverändert auf den Win-Rechner kopieren, das siehst du schon an der ersten Zeile:
#!usr/bin/perl
funzt halt bei Windows selten ...
Ich habe meines Wissens die korrekten Pfadangaben gemacht.
Und zwar wo? Ich schrieb nicht über den Pfad des Perl-Interpreters, sondern über die URL des Skripts.
Irgendwie kommt nicht rüber, was Du eigentlich erreichen willst: Keine Angabe Deines Ziels, keine Angabe einer Fehlermeldung - geht es vielleicht etwas konkreter?
Irgendwie kommt nicht rüber, was Du eigentlich erreichen willst: Keine Angabe Deines Ziels, keine Angabe einer Fehlermeldung - geht es vielleicht etwas konkreter?
hm, konkreter ...
Zielvorstellungen: nehmen wir an, Rechner A ist der, auf dem Apache läuft und Rechner B, C, D ... sind angeschlossen als Clients. Ich möchte, daß ich auf Rechner B z.B. ein Formular mit einer Feedback-Meldung realisieren kann, und ich möchte außerdem ein Forum haben, an dem sich Rechner A, B, C ... beteiligen können.
Die clients können mit Hilfe von Apache ihre jeweiligen HTML-Verzeichnisse bzw. die darin liegenden Dateien im Browser darstellen. Sie haben alle feste IP's in der Form 192.168.xxx.xxx. Aber cgi-Aktivitäten kann ich ihnen halt nicht beibringen. Die Fehlermeldung ist sinngemäß "you don't have access to the cgi-bin directory" auf allen Rechnern. Diese Meldung kriege ich auch, wenn ich lediglich ein klitzekleines Test-file nehme, das nur einfach "hallo" sagen soll.
Ist das konkret genug ?
schönste Grüße
Christoph S.
PS: ich seh grade, daß du vorhin noch einen anderen Rat gegeben hattest zur http.conf, das muß ich erstmal ausprobieren. Besten Dank erstmal
Hallo,
hm, konkreter ...
Zielvorstellungen: nehmen wir an, Rechner A ist
der, auf dem Apache läuft und Rechner B, C, D
... sind angeschlossen als Clients
...
Die clients können mit Hilfe von Apache ihre
jeweiligen HTML-Verzeichnisse bzw. die darin
liegenden Dateien im Browser darstellen. Sie
haben alle feste IP's in der Form
192.168.xxx.xxx. Aber cgi-Aktivitäten kann ich
ihnen halt nicht beibringen.
hm... so ganz werde ich da nicht schlau draus. Läuft jetzt nur ein Apache auf Rechner 'A' oder mehrere auch auf B, C , D? Die beiden zitierten Sätze widersprechen sich in dieser Hinsicht irgendwie (kommt mir zumindest so vor).
Welcher Rechner läuft unter Linux, welcher unter Win95, wie sieht die URL zum cgi-Skript aus usw...? Fragen über Fragen ;-)
Viele Grüße
Andreas
hm... so ganz werde ich da nicht schlau draus. Läuft jetzt nur ein Apache auf Rechner 'A' oder mehrere auch auf B, C , D? Die beiden zitierten Sätze widersprechen sich in dieser Hinsicht irgendwie (kommt mir zumindest so vor).
Welcher Rechner läuft unter Linux, welcher unter Win95, wie sieht die URL zum cgi-Skript aus usw...? Fragen über Fragen ;-)
Sehe ich ganz ähnlich. Entweder haben wir hier ein seltsames Netz von Webservern vor uns, dessen Funktion sich mir nicht erschließt, oder Christoph selbst hat ein allgemeines Verstädnisproblem, was CGI angeht.
CGI findet nicht 'auf' den Clients statt, sondern auf dem Server A - egal, was B für ein Betriebssystem, einen Browser etc. hat. So gesehen vermute ich, daß das Problem - wie auch immer das genau heißen mag - auf A, dem (wahrscheinlich einzigen) Webserver zu lokalisieren ist.
"you have no access to cgi-bin" kann leider mehreres bedeuten. Kann ich dazu die konkrete URL haben, die Du angesprochen hast? Das cgi-bin-Verzeichnis selbst dürftest Du nicht ansprechen (sonst Sicherheitslücke, siehe ein Posting weiter unten) - das würde diese Meldung auslösen. Falls Du eine konkrete Datei darin angesprochen haben solltest und dann diese Meldung bekommst, findest Du in logs/error_log im Apache-Verzeichnis eine sehr viel aussagekräftigere Meldung - bitte diese posten, dann sehen wir weiter.
so, ich bin wieder dran - entschuldigt, ich hab nicht gedacht, daß es mir so schwer fallen würde, eine einfache Frage zu stellen :-(
... Entweder haben wir hier ein seltsames Netz von Webservern vor uns, dessen Funktion sich mir nicht erschließt, oder Christoph selbst hat ein allgemeines Verstädnisproblem, was CGI angeht.
nein, ein "seltsames Netz" ist das nicht. Ein allgemeines Verständnisproblem wohl auch nicht, aber ein Ausdrucksproblem.
CGI findet nicht 'auf' den Clients statt, sondern auf dem Server A - egal, was B für ein Betriebssystem, einen Browser etc. hat. So gesehen vermute ich, daß das Problem - wie auch immer das genau heißen mag - auf A, dem (wahrscheinlich einzigen) Webserver zu lokalisieren ist.
Selbstverständlich ist "A" der einzige Rechner, auf dem der Apache läuft und auf dem es die entsprechenden Verzeichnisse usw. - darunter bestimmt auch den zu korrigierenden Fehler - gibt. Eine Mehrfachinstallation innerhalb eines kleinen Netzes ist unsinnig. Und die Rechner fahren alle Win9x und haben alle den IE 5.0. Das ist ja ein Teil meines Problems; wenn wenigstens "A" Linux fahren dürfte, wäre alles in schönster Ordnung, da klappts.
"you have no access to cgi-bin" kann leider mehreres bedeuten. Kann ich dazu die konkrete URL haben, die Du angesprochen hast? Das cgi-bin-Verzeichnis selbst dürftest Du nicht ansprechen (sonst Sicherheitslücke, siehe ein Posting weiter unten) - das würde diese Meldung auslösen. Falls Du eine konkrete Datei darin angesprochen haben solltest und dann diese Meldung bekommst, findest Du in logs/error_log im Apache-Verzeichnis eine sehr viel aussagekräftigere Meldung - bitte diese posten, dann sehen wir weiter.
völlig richtig - und da hab ich ganz am Anfang was zu sagen vergessen. Es gibt nämlich keine error_log, bzw. nur eine völlig leere Log-Datei und auch die anderen z.T. optionalen Log-Dateien werden zwar beim Starten angelegt, bleiben aber leer. Von Linux her kenne ich mindestens einen Start-Eintrag mit Uhrzeit und Hostname, das passiert hier nicht. Die entsprechende Pfad-Notierung in der http.conf muß aber wohl korrekt sein, da der Apache sonst nicht oder mit einer Fehlermeldung im DOS-Fenster starten würde.
Die mehrfach erfragte URL - hm, vielleicht gibts da doch ein Verständnisproblem. Mal der Reihe nach: Rechner "A" fährt Win9x und hat auf Laufwerk D:\ den Apache installiert bekommen. Es gibt also ein Verzeichnis D:\Apache mit mehreren Unterverzeichnissen, darunter D:\Apache\cgi-bin - das ist Standardinstallation. Außerdem gibts ein Verzeichnis D:\Apache\doc, das unter anderem eine index.html enthält und als "document-root" in der http.conf eingetragen wurde. Wenn ich jetzt Apache auf Rechenr "A" aufrufe, kommt nach zwei Sekunden ein DOS-Fensterchen mit der Meldung "Apache is running..." und ich kann mich an Rechner "B" setzen und kucken, was der damit anzufangen weiß. - Rechner "B" hat selbstverständlich nicht nochmal den Apache installiert, sondern außer Win9x so ziemlich nix weiter. In den "Internetoptionen" des IE 5.0 ist als "Startseite" die IP von "A" in der Form angegeben: "http://192.168.xxx.xxx". Es könnte dort auch stehen "http://localhost" oder "http://ph1" - ob "http://127.0.0.1" auch funktioniert, weiß ich gar nicht, müßte aber eigentlich. Wenn ich jetzt den IE auf Rechner "B" aufrufe, erscheint die auf Rechner "A" im Verzeichnis D:\Apache\doc liegende index.html im Browser, und je nachdem, was ich in diese index.html reingepackt habe, geht es anstandslos weiter.
ABER: jetzt habe ich auf index.html einen link zu einer formular1.html (die im selben Verzeichnis auf Rechner "A" liegt), und diese Datei soll nun eine Fedbackmeldung oder irgendeine cgi-Aktivität bringen. Genau da passiert es, daß das Formular vom Bildschirm verschwindet und stattdessen die Meldung "you don't have access to cgi-bin ...." kommt. Und das wars dann. Auf Rechner "A" finde ich erwartungsgemäß im Verzeichnis D:\Apache\logs mehrere log-Dateien, darunter auch error_log - und alle sind absolut leer.
So, jetzt isses doch ein ellenlanges posting geworden, aber ich hoffe, ich hab meine Frage nun endlich richtig formuliert und bedanke mich für eure Hilfsbereitschaft.
Christoph S.
Es gibt nämlich keine error_log, bzw. nur eine völlig leere Log-Datei und auch die anderen z.T. optionalen Log-Dateien werden zwar beim Starten angelegt, bleiben aber leer. Von Linux her kenne ich mindestens einen Start-Eintrag mit Uhrzeit und Hostname, das passiert hier nicht.
Muß es aber (ich verwende Apache auf Win95 und NT, und er verhält sich in dieser Hinsicht überall gleich).
Werden Deine Zugriffe auf HTML-Dokumente wenigstens in der access_log protokolliert? Wenn nicht, dann sind das vielleicht gar nicht die relevanten Dateien (Änderungsdatum der Dateien? Ggf. Explorer nehmen und ganze Platte absuchen bzw. Pfadnamen in httpd.conf überprüfen - die sind relativ zum rootdir).
»» Die entsprechende Pfad-Notierung in der http.conf muß aber wohl korrekt sein, da der Apache sonst nicht oder mit einer Fehlermeldung im DOS-Fenster starten würde.
Klar, aber die Dateien könnten eben woanders liegen.
Die mehrfach erfragte URL - hm, vielleicht gibts da doch ein Verständnisproblem.
ABER: jetzt habe ich auf index.html einen link zu einer formular1.html (die im selben Verzeichnis auf Rechner "A" liegt), und diese Datei soll nun eine Fedbackmeldung oder irgendeine cgi-Aktivität bringen. Genau da passiert es, daß das Formular vom Bildschirm verschwindet und stattdessen die Meldung "you don't have access to cgi-bin ...."
Genau das meinte ich: Die exakte URL des Dingens, was "CGI-Aktivitäten bringen" soll. formular1.html ist bestimmt keine passende Endung für ein CGI-Skript, und was der Webserver mit einem HTML-Dokument in einem CGI-Verzeichnis macht, das führt meistens nicht zu glücklichen Anwendern. Wie soll er unterscheiden, ob er den Datei-Inhalt anzeigen oder ausführen muß? (Nicht an der Endung - jedenfalls nicht in cgi-bin ...)
Vielleicht meinst Du, daß Du in diesem formular1.html ein Formular drin hast, welches dann per <form>-tag das CGI-Skript aufrufen soll? Dann bräuchten wir beide URLs.
Am besten postest Du den Abschnitt des HTML-Dokuments mit dem Link auf das CGI-Skript.
Wenn an dieser Anbindung alles okay sein sollte, dann diskutieren wir als nächstes über die Apache-Konfiguration.
Vielleicht meinst Du, daß Du in diesem formular1.html ein Formular drin hast, welches dann per <form>-tag das CGI-Skript aufrufen soll? Dann bräuchten wir beide URLs.
Am besten postest Du den Abschnitt des HTML-Dokuments mit dem Link auf das CGI-Skript.
Wenn an dieser Anbindung alles okay sein sollte, dann diskutieren wir als nächstes über die Apache-Konfiguration.
Das Thema hat sich inzwischen "von allein" erledigt, der Fehler lag an einer gänzlich anderen Stelle.
Ich wollte heute nochmal ein perl-script bauen, da meldete sich kein perl-Interpreter. Siehe da, jemand hatte mir die autoexec.bat gelöscht - also hab ich eine neue autoexec.bat geschrieben, die dem Perl-Interpreter ja einen Pfad zuweisen muß. Und plötzlich sind die Apache-Fehlermeldungen auch nicht mehr da und alles funktioniert so, wie es soll.
<grins>
Darauf muß man erstmal kommen ...
Ich bedanke mich für die Hilfsbereitschaft.
Christoph S.