Relative Adressierung in PHP anders als in HTML?
Thomas
- php
Hallo,
mich wundert folgendes:
Um mir Tipparbeit zu ersparen, füge ich wiederkehrende Seitenelemente per include in meine Website ein. Seltsamerweise funktioniert dabei die Adressierung in folgender Weise nicht:
<?php include ("/skripte/copyright.php"); ?>
Es funktioniert nur so:
<?php include ("../skripte/copyright.php"); ?>
Der obere Link, der vom Wurzelverzeichnis aus in den Ordner "Skripte" und dort zu dem File "copyright.php" geht, funktioniert in HTML als href-Link einwandfrei. Der untere Link geht zwar den gleichen Weg, startet aber nicht im Wurzelverzeichnis, was das ganze unflexibler macht.
Kennt jemand von euch den Grund?
Danke
Thomas
Hallo Thomas,
Kennt jemand von euch den Grund?
Ja, HTML arbeitet von der DocumentRoot aus, PHP von deinem Root-Verzeichnis auf dem Server. zur Veranschaulichung:
Dein Verzeichnis auf dem Server:
/docs/kunden/thomas/www.example.org/www/scripte
Da liegen Deine Dateien, und damit 'rechnet' PHP, wie alle serverseitigen Scriptsprachen.
Deine Seite liegt im www/ ordner und damit 'rechnet' der Browser, weil er nur das zu sehen bekommt.
Verständlich? ;)
Gruss, Thoralf
Hi,
Um mir Tipparbeit zu ersparen, füge ich wiederkehrende Seitenelemente per include in meine Website ein. Seltsamerweise funktioniert dabei die Adressierung in folgender Weise nicht:
unterscheide zwischen relativen Angaben im Filesystem und solchen in URLs. Ressourcen und Dateien haben *nichts* miteinander zu tun, und insbesondere ist Root etwas vollkommen anderes.
Cheatah
Es kann eigentlich nur sein, das dein jetziger Standort zum Beispiel in
/usr/local/apache/htdocs/testordner/test.php
ist.
Dein copyright.php php liegt aber in
/usr/local/apache/htdocs/skripte/
heißt .. <-- ein Verzeichnis Zurrück nach
/usr/local/apache/htdocs/
/skripte/ -> /usr/local/apache/htdocs/skripte/
/copyright -> /usr/local/apache/htdocs/skripte/copyright
ohne die Punkte würde er ja versuchen dahin zu gehen
/usr/local/apache/htdocs/testordner/skripte/copyright.php , was es ja aber nicht gibt
mfg
Zafron
Hallo Zafron, Thoralf und Cheatah
ohne die Punkte würde er ja versuchen dahin zu gehen
/usr/local/apache/htdocs/testordner/skripte/copyright.php , was es ja aber nicht gibt
Ihr habt es gleich erfaßt! :-)
Zum einen benutze ich Apache als Webserver (und arbeite unter Windows), zum anderen habe ich in der Tat diesen Unterschied nicht bedacht/gewußt. Da ich gerne alle Dateien, die zu meinem Webprojekt gehören, beisammen hätte und nicht verteilt auf die apache/includes - usw. Ordner, kann ich da vielleicht das httpd.conf - File so ändern, daß Apache die includes an der richtigen Stelle findet?
Oder schieße ich damit ein Eigentor, weil, sobald ich meine Seiten zum Webhoster hochlade, wieder an der falschen Stelle gesucht wird?!
Und falls das dann der Fall wäre, reicht es dann vielleicht, bei <?php include ... ?> nur den Dateinamen selbstz anzugeben, vorausgesetzt, die zu includierende Datei steht direkt im apache/includes - Ordner?
Danke und Gruß
Thomas
Hi,
Da ich gerne alle Dateien, die zu meinem Webprojekt gehören, beisammen hätte und nicht verteilt auf die apache/includes - usw. Ordner, kann ich da vielleicht das httpd.conf - File so ändern, daß Apache die includes an der richtigen Stelle findet?
Dateien sind Dateien, da ist über die Konfiguration nichts dran zu rütteln. Entweder packst Du Dein DOCUMENT_ROOT in das Wurzelverzeichnis Deiner Festplatte - was ich *definitiv _nicht_* empfehlen kann - oder Du sorgst in Deinem Script für die Generierung des richtigen Dateipfades. Hinweise dazu in diesem Absatz.
Cheatah
Hallo Cheatah,
Dateien sind Dateien, da ist über die Konfiguration nichts dran zu rütteln. ... oder Du sorgst in Deinem Script für die Generierung des richtigen Dateipfades.
Alles klar, werde ich so machen, Danke.
Gruß
Thomas