Wenn ich aber „/news.txt“ öffne kriege
ich immer einen Fehler.
Hallo Joachim,
das Problem kann an den Rechten liegen.
Davon ausgehend das Du eine Linux-Standardkonfiguration mit einer „Standard“ Distribution verwendest, würde ich sagen das Du evtl. mit chmod 755 (777) ggf. weiter kommen kannst.
Wobei ich nicht sicher bin, wieweit Du (selbst als root) schreib/lese/ausführrechte auf dem / Verzeichnis hast.
Besser ist es evtl. den news.txt in ein entsprechendes Verzeichnis zu verbannen. Es ist sowieso etwas unfein im / Verzeichnis Dateien zu hosten.
Ich habe hier bei mir lokal einen
HTTP-Server eingerichtet (Linux).
Jetzt möchte ich in einem Perlscript
(CGI)
eine Datei auslesen.
Im Wurzelverzeichnis des Webservers
existiert eine Datei „news.txt“. Die will
ich auslesen.
Wenn ich aber „/news.txt“ öffne kriege
ich immer einen Fehler.
Wie muß ich das machen?
Wie Knud schon angedeutet hat liegt es an den verschiedenen Verzeichnis-Bäumen.
Zum einen gibt es den öffentlichen Verzeichnisbaum, der unter dem htdocs-Verzeichnis-Baum des Webservers zu finden ist.
Perl wird vom Webserver gestartet und läuft unter dem gleichem Benutzer wie der Webserver (i.a. nicht Dein Benutzeraccount).
Wenn Du nun auf „/news.txt“ zugreifst, so weiß Perl nichts vom Root-Verzeichnis des Webservers, sondern nimmt das Root-Verzeichnis des Betriebssystems. Das ist natürlich das falsche (wie Du schon an der Fehlermeldung erkennen kannst).
Soweit ich mich erinnern kann, gibt der Apache eine Environment-Variable an Perl weiter (ich glaube es war DOCUMENT_ROOT). Die solltest Du vor den Dateinamen stellen.
Jedoch solltest Du aufpassen, das dies hart verdrahtet wird und nicht durch Parameter beeinflußbar ist (nicht von der Client-Seite her!), da es sonst passieren kann, das der Client Zugriff auf Dateien „außerhalb“ des Webservers erhalten kann.
Ich hoffe, daß ich jetzt nicht zu viel geschrieben habe.