include path
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absolute pfad
absolute pfade
anpassen
anzeige
code
datei
demo
http
index
kleiner tipp
ordner
ort
relative pfade
relativer pfad
richtung
url
verzeichnis
weitestgehend vermeiden
wissen
wurzel
-
hi,
vermutlich ne seeeehr dumme frage....
von welchem directory geht lima aus bei einem include??
also ich bin in meiner indexdatei und include eine datei im unterordner (funzt super) und das selbe nocheinmal von da (tut auch) will dann aber von da aus eine datei so includen:
include './../anderer_ordner/datei.tpl';
und das mag lima scheinbar nicht....
vielen dank schonmal -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
@sun-flash
von welchem directory geht lima aus bei einem include??
dem nach sind die:<?php exit ("<h3>default include_path:<br /><pre>".print_r ($a = explode (":", get_include_path()),true)); ?>
'.' - der ordner, wo dein index.php rennt (relative adressierung) und
'/usr/lib/php/' - (absolute adressierung).
also ich bin in meiner indexdatei und include eine datei im unterordner (funzt super) und das selbe nocheinmal von da (tut auch) will dann aber von da aus eine datei so includen:
vermutlich (weil ich ja nicht wissen kann, wo dein index.php liegt [deine schreibweise ist relativ!]) ist dein index.php in deinem DOCUMENT_ROOT. von dort geht es in nur eine richtung, in die tiefe. aufwerts (so wie du schreibt './../'), richtung 'root ordner' der festplatte) geht es nicht!
include './../anderer_ordner/datei.tpl';
und das mag lima scheinbar nicht.... -
vermutlich (weil ich ja nicht wissen kann, wo dein index.php liegt [deine schreibweise ist relativ!]) ist dein index.php in deinem DOCUMENT_ROOT. von dort geht es in nur eine richtung, in die tiefe. aufwerts (so wie du schreibt './../'), richtung 'root ordner' der festplatte) geht es nicht!
jupp daran lags;) tut jetzt alles
nochmal für's verständnis: relative pfade gehen also von meinem root verzeichnis aus???
gibts denn trotzdem ne möglichkeit von einem (includeten) underverzeichnis in ein anderes unterverzeichnis relativ zu includen (also ohne absolute pfade und ohne vom root-verzeichnis auszugehen?? (also von zb "ROOT/unterverzeichnis/erster_ordner" nach "ROOT/unterverzeichnis/anderer_ordner")
mfg -
Ein Include kannst du immer relativ machen, ist in vielen Fällen sogar angebracht.
Beispielsweise folgende Verzeichnisstruktur
/htdocs /include - include2.php - include_me.php /scripts - anzeige.php
Dann könntest du in der Anzeige.php sowas drin stehen haben wie
<?php include_once ('../include/include_me.php'); ?>
Um Include2.php von Include_me.php zu inkludieren, nimmst du
<?php include_once('include2.php'); ?>
... egal, ob Include_me.php von anzeige.php aufgerufen wird oder nicht.
Relativ bedeutet also: Von dem Ort aus, in dem sich dein Script befindet.
Absolut bedeutet von der Wurzel der Serverfestplatte. Absolute Pfade sollte man allerdings weitestgehend vermeiden, denn wenn deine Seite mal umzieht,ändert sich sehr wahrscheinlich der absolute Pfad und du musst alle Skripte anpassen. -
@sun-flash
nochmal für's verständnis: relative pfade gehen also von meinem root verzeichnis aus???
JEIN ;o)
1. ja, wenn das direkt aufgerufene prog im root ordner ist;
2. nein, wenn es wo anders ist;
also dann immer der ordner, wo das direkt aufgerufene prog gerade rennt, von wo es selbst includiert.
gibts denn trotzdem ne möglichkeit von einem (includeten) underverzeichnis in ein anderes unterverzeichnis relativ zu includen (also ohne absolute pfade und ohne vom root-verzeichnis auszugehen?? (also von zb "ROOT/unterverzeichnis/erster_ordner" nach "ROOT/unterverzeichnis/anderer_ordner")
na klar. aber trotz aller unkenrufe sind absolute includes genau so gut!
@iniquitiusRelativ bedeutet also: Von dem Ort aus, in dem sich dein Script befindet.
teilwahrheit, also kann falsch sein.
Absolut bedeutet von der Wurzel der Serverfestplatte.
ja.
Absolute Pfade sollte man allerdings weitestgehend vermeiden, denn wenn deine Seite mal umzieht,ändert sich sehr wahrscheinlich der absolute Pfad und du musst alle Skripte anpassen.
aber definitiv nicht!
um mal jetzt alle restlichen klarheiten gründlich zu beseitigen, ein kleines include-demo (natürlich mit source code) von mir an die include geplagten limaer ;o)
was man sieht ist nur:
- jeder programmteil stellt sich mit einer zeile "*** /home/webpages/lima-city/.. " (absoluter pfad) nach dem includen vor;
- am ende dann werden alle (wirklich bescheidene) source codes gezeigt.
der gerissene betrachter merkt eventuell verdutzt, dass das direkt aufgerufene programm
http://czibere.lima-city.de/_forum/includes/index.php oder
sich unter den included files befindet unter index=0. genau! und der dazu gehörende pfad ist der relative, und zwar für alle includes, wie auch immer du kreuz und quer includierst!
/home/webpages/lima-city/czibere/html/_forum/includes/index.php
wenn man jetzt den teil mit abs-include herausnimmt und auf paar hosts ausprobiert, muss man bald einsehen, dass es geht, egal welche lage DOCUMENT_ROOT und die programmdirektory zueinander haben! sollte das nicht der fall sein, hat man die materie noch immer nicht intus! (in dem fall demo genauer studieren ;o) -
Kleiner Tipp:
require_once realpath(dirname(__FILE__)."/../../relativer/pfad/datei.php");
Sowas geht immer und überall (relativ zu der Datei, in der es steht). -
@theseven
Kleiner Tipp:
hier ungetestet die meldung von php!:
require_once realpath(dirname(__FILE__)."/../../relativer/pfad/datei.php");
Sowas geht immer und überall (relativ zu der Datei, in der es steht).
Warning: require_once(): Filename cannot be empty in /path/to/<filename>.php on line x
Fatal error: require_once(): Failed opening required '' (include_path='.:/blaaa..:/blaaa...') in /path/to/<filename>.php on line x
guter tipp! kannst dir gratulieren ;o)
warum das so sein kann? weil du z.b. mit '../../' außerhalb des DOCUMNET_ROOTs geraten bist? mal probiert? tue dir das an!
1. realpath gibt false von sich, wenn datei nicht existiert. prüfst du das? nein!
2. require[_once] erwartet als parameter string, kommt aber false
wie heißt es? guter rat ist teuer! ich gebe euch einen echt guten um sonst: lasst die finger von '../' in jeder situation. eine logisch aufgebaute seite hat ein logisches filesystem, un in so einem braucht kein aas '../'.
eine funktionierende variante - weil 'false' abfäng - ist dagegen (ich rate aber trotzdem von der verwendung von '../' ab!):
da kannst mit $rp (relativ-path) ein bisschen herumexperimentieren, dass du ein gefühl für die sache kriegst.<?php $rp = "/../../relativer/pfad/datei.php"; require_once ( $r = realpath (dirname (__FILE__) . $rp)) ? $r: "/path/to/ERROR_404.php"; ?>
Beitrag zuletzt geändert: 31.3.2010 17:19:13 von czibere -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage