Korrekte Angabe eines Pfades zur Datei
Tom1tk
- php
0 Marc Reichelt0 Tom1tk0 Marc Reichelt0 Tom1tk0 Tom0 Tom1tk0 Andre Grosse-Erwig0 Tom0 Tom1tk0 Andre Grosse-Erwig0 Tom
Hallo zusammen.
In meinem php-Projekt habe ich verschiedene Dateien in verschiedenen Ordnern:
Ordner a:
Datei a_1.php
Datei a_2.php
Ordner b:
Datei b_scripte.php
Datei b_daten.php
Die Datei a_1.php:
<?php
include "a_2.php";
?>
Die Datei a_2.php
<?php
include "../b/b_scripte.php";
include "../b/b_daten.php";
?>
In der b_scripte.php wird die Datei b_daten.php geschrieben, bzw. etwas angefügt. Wie muss ich jetzt in der Datei b_scripte.php die Datei öffnen???? Mit ner Referenz von der oberseten "include-Ebene" (also "../b/b_daten.php" aus, oder mit der Pfadangabe "./b_daten.php"??
Nochmal: In der Scripte Datei befinden sich alle Funktionen, die die Eingaben aus a_2.php verarbeiten und in die Datei b_daten.php reinschreiben. Und wie muss ich jetzt korrekterweise referenzieren? Ich hab das mit beiden Schreibweisen getestet und komischerweise gehen beide?????? Ich blicks nicht mehr.
Meiner Meinung nach muss ich doch immer von der jeweiligen ausführenden Datei (aslo b_scripte.php) die Referenz nach b_daten.php schreiben und nicht von a_1.php nach b_daten.php.
Schwierig auszudrpcken, aber ich hoffe Ihr wisst was ich meine.
Danke für Eure Hilfe.
Tom1tk
Hi!
Ich glaube du meinst folgendes:
1. Willst du von einer PHP-Datei eine andere mittels include öffnen, die sich IM SELBEN Ordner befindet, musst du "./dateiname.php" anwenden ("./" steht für den gleichen Ordner)
2. Willst du von einer Datei aus eine andere IN EINEM ANDEREN Ordner includen, so musst du "../ordnername/dateiname.php" anwenden. ("../" steht für den Ordner, der höher liegt)
Ich hoffe jetzt klappts!
cu
Marc Reichelt || http://www.marcreichelt.de/
Danke schön.
Das wars aber noch nicht ganz: Diese Referenzierung ist mir klar.
Ein Beispiel:
Datei im Ordner ROOT/A/B_1/a.php:
<?php include "../../B_2/xy/zy/ordner/super.php"; ?>
Diese Datei includet wiederum:
<?php include "../../../../../../meine_functionen_im_root.php"; ?>
So: wenn die Datei a.php jetzt ausgeführt wird, dann wird doch die Datei super.php mit includet, und was passiert jetzt mit den meine_funktionen_im_root.php? Wird dieser "Befehl" erst in der Datei a.php ausgeführt, oder schon in der super.php?
Schwierig, schwierig....
Greets Tom1tk
Hi!
Soweit ich weiß müsste der "Ausführungspfad" aller Dateien dann deiner "a.php" entsprechen.
Ich habe das Problem glaube ich schon mal selbst gehabt und einen Workaround versucht.
cu
Marc Reichelt || http://www.marcreichelt.de/
Tach auch,
genau das meinte ich, hab aber nirgens eine echte Beschreibung / Hilfe gefunden.
Greets
Hello,
abgearbeitet wird immer mit dem aktuellen Verzeichnis, in dem das Script steht, es sei denn, dass Du die Dateien über http:// includest. dann wird natürlich dort abgearbeit, wo jene Dateien liegen...
Das bedeutet, dass die Pfade immer relativ zum Scriptverzeichnis gesetzt werden müssen. Man kann allerdings auch das Verzeichnis wechseln:
http://de3.php.net/manual/de/function.chdir.php
Allerdings sollte man sich vorher ggf. das aktuelle Verzeichnis merken:
http://de3.php.net/manual/de/function.getcwd.php
Liebe Grüße aus http://www.braunschweig.de
Tom
Oh jeah.
Das wars. Thanx nach Braunschweig.
Grüßle Tom1tk
Hi,
...weil ich das Problem selber gerade hatte. Leichte ist es, finde ich, wenn du beim 'includen' wie folgt vorgehst:
$dir = $_SERVER['DOCUMENT_ROOT'];
$require($dir."deine_datei.php");
das ist wesentlich übersichtlicher und du musst immer nur den absoluten Pfad zu deinen Dateien angeben, egal von wo du sie aufrufst.
Grüße, Andre
Hello,
...weil ich das Problem selber gerade hatte. Leichte ist es, finde ich, wenn du beim 'includen' wie folgt vorgehst:
$dir = $_SERVER['DOCUMENT_ROOT'];
$require($dir."deine_datei.php");das ist wesentlich übersichtlicher und du musst immer nur den absoluten Pfad zu deinen Dateien angeben, egal von wo du sie aufrufst.
Nun sollten gerade include-Dateien oft nicht innerhalb der Document Root liegen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Guten Morgen,
nun ja, das mit den inclkude-Dateien ausserhalb des Roots ist sinnvoll. Deshalb nochmals meine Frage, jetzt mit Beispiel:
Datei ROOT/A/B/a.php:
<?php
include "../../A_1/B/C/D/b.php";
?>
Datei ROOT/A_1/B/C/D/b.php:
<?php
print $_SERVER["REDIRECT_SCRIPT_URI"];
?>
So: Was wird jetzt korrekterweise beim Aufruf von a.php ausgegeben:
"http://www.domain.de/A/B/a.php"
oder
"http://www.domain.de/A_1/B/C/D/b.php"
Das ist die große Frage aller Fragen! Klar kann ich das ausprobieren, aber vielleicht hat jemand irgendwo ne Befehlsreferenz, wo das genau beschrieben steht, wie man das korrekt macht.
Danke
Tom1tk
Hi, Tom
Nun sollten gerade include-Dateien oft nicht innerhalb der Document Root liegen.
Da hast du mir jetzt einen entscheidenden Hinweis gegeben. Danke. Ich schätze da werde ich jetzt was ändern müssen :)
Grüße, Andre
Hello,
Nun sollten gerade include-Dateien oft nicht innerhalb der Document Root liegen.
Da hast du mir jetzt einen entscheidenden Hinweis gegeben. Danke. Ich schätze da werde ich jetzt was ändern müssen :)
Na, und das ist auch ganz einfach, weil PHP ja den [include_path] grundsätzlich verwendet, wenn die gesuchte Datei nicht im aktuellen Verzeichnis steht.
Wenn man seine Dateien unter dem include_path ablegt, dann braucht man auch nur
include("datei.inc.php")
zu schreiben.
http://de3.php.net/manual/de/function.set-include-path.php
http://de3.php.net/manual/de/function.get-include-path.php
Liebe Grüße aus http://www.braunschweig.de
Tom