Notation /
Grünschnabel
- sonstiges
0 Rekire0 Jack0 Rekire0 Jack
0 Blaubart0 Der Martin
0 Server-Einstellung
Grünschnabel
Hallo,
leider weiß ich nicht, wohin das Thema gehört.
In SELFHTML habe ich die Erläuterungen zu gefunden
./
farben.htm
./farben.htm
bilder/grafik.gif
./bilder/grafik.gif
../
../../../../woanders/datei.htm
Ich sehe aber oft auch die Angabe
/irgenwas
also / ohne vorangehendem .
Was bedeutet dies?
Was bedeutet dies?
Das es sich um das Root (Haupt-) Verzeichnis handelt.
Was bedeutet dies?
Das es sich um das Root (Haupt-) Verzeichnis handelt.
Und wieso klappt dann das?
Verzeichniss:
root
a
b
c
c1
images
d
e
f
Wenn ich in einer Datei im Verzeichniss c1 eine Pfadangabe zu
einem Bild in images mache <img src="./images/bild1.jpg"....
c1 befindet sich nicht im Root, sondern im
Verzeichniss c, klappt aber trotzdem.
Wenn ich in einer Datei im Verzeichniss c1 eine Pfadangabe zu
einem Bild in images mache <img src="./images/bild1.jpg"....c1 befindet sich nicht im Root, sondern im
Verzeichniss c, klappt aber trotzdem.
Natürlich geht das denn ./ steht für das aktuelle Verzeichnis.
Du kannst da das ./ weg lassen.
Sinnvoll ist es meiner Meinung nur wenn du von sagen wir mal /a/datei3.html auf /a/ verweisen möchtest.
Gruß,
Rekire
Natürlich geht das denn ./ steht für das aktuelle Verzeichnis.
Genau, und nicht unbedingt immer "root" wie
man deine letzte Antwort hätte deuten können.
Sinnvoll ist es meiner Meinung nur wenn du von sagen wir mal /a/datei3.html auf /a/ verweisen möchtest.
Sehe ich auch so, allerdings stellt sich dann wieder genau die eigentliche Frage "Wo ist der Unterschied zwischen ./ und /",
wenn doch beides gleich funktioniert?
Ich frage mich das auch schon lange, aber nie hier gefragt um
nicht blöd dazustehen. Ein Grund den ich mit Vielen teile,
warum auch gerade einfache Fragen oft nie beantwortet werden,
weil sie keiner stellen will. ;-)
Jack
Hallo Jack,
Sehe ich auch so, allerdings stellt sich dann wieder genau die eigentliche Frage "Wo ist der Unterschied zwischen ./ und /", wenn doch beides gleich funktioniert?
nein, es funktioniert eben _nicht_ gleich. Die Pfadangabe "./" geht vom aktuellen Verzeichnis (Punkt) aus und sucht von da aus weiter, die Pfadangabe "/" ohne Punkt geht gleich vom Root-Verzeichnis aus. Das ist ein ganz wesentlicher Unterschied. Im ersten Fall ist die Angabe relativ zum aktuellen Verzeichnis, im zweiten Fall absolut vom Root des Filesystems (oder HTTP-Root).
Dasselbe gilt auch im Windows-Dateisystem. Wenn du dich in einem beliebigen Verzeichnis befindest, in dem eine Datei notepad.exe liegt, kannst du die entweder ganz ohne Pfadangabe "notepad.exe" aufrufen, oder explizit im aktuellen Verzeichnis mit ".\notepad.exe", oder du kannst die Kopie aus dem Windows-Verzeichnis ansprechen, indem du sie absolut "\Windows\notepad.exe" adressierst.
Jetzt etwas klarer?
Ciao,
Martin
Jetzt etwas klarer?
Ja, danke Martin
hallo,
Dasselbe gilt auch im Windows-Dateisystem. Wenn du dich in einem beliebigen Verzeichnis befindest, in dem eine Datei notepad.exe liegt, kannst du die entweder ganz ohne Pfadangabe "notepad.exe" aufrufen, oder explizit im aktuellen Verzeichnis mit ".\notepad.exe", oder du kannst die Kopie aus dem Windows-Verzeichnis ansprechen, indem du sie absolut "\Windows\notepad.exe" adressierst.
Interessanter Hinweis. Allerdings sieht sich in Windows kaum noch jemand veranlaßt, von der Konsole (Eingabeaufforderung) aus eine ausführbare Datei aufzurufen, und egal, welchen Pfad du verwendest: es wird immer funktionieren. Unter Linux ist das anders. Du kannst in einem Verzeichnis ja durchaus ausführbare Dateien haben, die als Shellscripts oder als binaries vorliegen. Wenn das Verzeichnis, in dem du dich befindest, im (System-)Pfad liegt, kannst du ausführbare Scripts durch den Aufruf ihres Namens auch vom Interpreter ausführen lassen; liegt das Verzeichnis aber nicht im Pfad, geht es eben nicht unmittelbar.
Beispiel: du willst dir einen Apache kompilieren und brauchst dazu das Shellscript "configure". Das Installationspaket hast du in "/misc/install" ausgepackt - und dieses Verzeichnis liegt nicht im Systempfad. Du willst deinen Apache selber kompilieren, weil du beispielsweise ein paar Module für überflüssig hältst oder die Konfigurationsdatei "martin" nennen willst. Dazu brauchst du das configure-Script, das in deinem Installationsverzeichnis liegt. Es ist ein Shellscript. Wenn du jetzt aber auf deiner Konsole einfach bloß "configure" aufrufst, passiert gar nichts (es sei denn, du schummelst und gibst explizit "sh configure" an). Wenn du aber "./configure" tippst, gehts plötzlich. Diese Schreibweise ist also dann wichtig, wenn es um ausführbare Dateien geht und der Interpreter angesprochen werden muß. Das hängt damit zusammen, daß mit "./" die bereits für die Konsolenanzeige benutzte Shell verlassen und erneut aufgerufen wird, ohne das Verzeichnis zu wechseln.
In Verweisen innerhalb von HTML-Dateien sind solche Pfadangaben wie "./seite.htm" daher eigentlich falsch bzw. unnötig.
Grüße aus Berlin
Christoph S.
Hi Jack.
Wenn ich in einer Datei im Verzeichniss c1 eine Pfadangabe zu
einem Bild in images mache <img src="./images/bild1.jpg"....c1 befindet sich nicht im Root, sondern im
Verzeichniss c, klappt aber trotzdem.
Es gibt einen Unterschied zwischen "." (dieses Verzeichnis) und "/" (Wurzelverzeichnis). Mit "./images/bild1.jpg" sagst du nichts anderes als "die Datei bild1.jpg, die im Verzeichnis images liegt, welches sich im aktuellen Verzeichnis befindet".
Hallo,
[ "/" ] Was bedeutet dies?
Das es sich um das Root (Haupt-) Verzeichnis handelt.
richtig.
<img src="./images/bild1.jpg" ...
c1 befindet sich nicht im Root, sondern im
Verzeichniss c, klappt aber trotzdem.
Ja, weil der Pfad mit einem "." als erstem Verzeichnisnamen beginnt. Der Punkt "." steht für das aktuelle Verzeichnis, zwei Punkte ".." für das übergeordnete Verzeichnis. Mit "/" werden Verzeichnisse getrennt; nur wenn ein "/" als _erstes_ Zeichen im Pfad auftritt, bedeutet es einen Start im Root-verzeichnis.
So long,
Martin
Hallo,
habe die Verzeichnisgeschichte verstanden.
Jetzt habe ich ein konkretes Problem.
Habe Apache installiert und in der httpd.conf an den beiden Stellen, wo cgi-bin vorkommt fplgende Änderungen vorgenommen:
# ScriptAlias /cgi-bin/ "C:/XAMPP/cgi-bin/" <====== alt
ScriptAlias /cgi-bin/ "C:/XAMPP/htdocs/cgi-bin/"
</IfModule>
<Directory "C:/XAMPP/htdocs/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Wenn ich jetzt ein Script in cgi-bin aufrufe, kommt der Fehler:
[error][client 127.0.0.1]attempt to invoke directoy as script: c:/XAMPP/htdocs/cgi-bin/
Hoffentlich kann mir jemand weiterhelfen
Hallo,
habe vergessen: Die Meldung kommt in der log-Datei, am Bildschirm kommt
Zugriff verweigert!
.....
Error 403
Hallo,
wenn ich das Verzeichnis xcgi-bin nenne, dann funktioniert es.
Aber ich möchte natürlich nicht einen anderen Namen verwenden, schon wegen der Übertragbarkeit ins Internet!
Hilfe!
hi,
Wesshalb willst du denn das Verzeichnis derartig verschieben?
In der Srt wie du es jetzt verwendest wird es normalerweise nicht gehandbabt.
Ich vermutet das es dem Apache nicht passt das du ein virtuelles Verzeichnis erstellst was deckungsgleich mit dem eigentlichem Verzeichnis ist.
Aus dem Grund würde ich auch wenn es nicht Empfehlenswert ist das htdocs verzeichnis mit cgi rechten ausstatten.
Eine andere möglichkeit wäre htaccess aber da kenne ich mich nicht so gut mit aus.
Ich hoffe das ich helfen konnte.
Gruß,
Rekire
Wesshalb willst du denn das Verzeichnis derartig verschieben?
In der Srt wie du es jetzt verwendest wird es normalerweise nicht gehandbabt.
Damit es im root-Verzeichnis steht wie bei meinem Provider.
Und in der conf-Datei kann man es ja wohl auch so angeben - wenn man es richtig macht?
Wesshalb willst du denn das Verzeichnis derartig verschieben?
In der Srt wie du es jetzt verwendest wird es normalerweise nicht gehandbabt.
Damit es im root-Verzeichnis steht wie bei meinem Provider.
Und in der conf-Datei kann man es ja wohl auch so angeben - wenn man es richtig macht?
Aber wie macht man es richtig?
hallo,
Wenn ich jetzt ein Script in cgi-bin aufrufe, kommt der Fehler:
[error][client 127.0.0.1]attempt to invoke directoy as script: c:/XAMPP/htdocs/cgi-bin/
Du hast kein Script aufgerufen, sondern das cgi-bin-Verzeichnis direkt eingegeben. In diesem Verzeichnis liegen ausführbare Dateien, es gibt dort also kein "Standarddokument" wie in anderen Verzeichnissen - etwa eine "index.htm". Der Server behandelt alle Anfragen, die Scripts in diesem Verzeichnis gelten, so, daß er den Perl-Interpreter aktiviert. Wenn du nun nur das Verzeichnis angibst, weiß der Webserver nicht, was er tun soll und quittiert das mit dieser Fehlermeldung. Du mußt grundsätzlich den exakten Namen deines cgi-Scripts angeben.
Grüße aus Berlin
Christoph S.