kostenloser Webspace werbefrei: lima-city


include path

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    sun-flash

    sun-flash hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. @sun-flash
    von welchem directory geht lima aus bei einem include??
    <?php
    exit ("<h3>default include_path:<br /><pre>".print_r ($a = explode (":", get_include_path()),true));
    ?>
    dem nach sind die:
    '.' - 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:
    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!
  4. Autor dieses Themas

    sun-flash

    sun-flash hat kostenlosen Webspace.

    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
  5. 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.
  6. @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!

    @iniquitius
    Relativ 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
    /home/webpages/lima-city/czibere/html/_forum/includes/index.php
    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!

    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)
  7. Kleiner Tipp:
    require_once realpath(dirname(__FILE__)."/../../relativer/pfad/datei.php");


    Sowas geht immer und überall (relativ zu der Datei, in der es steht). ;-)
  8. @theseven
    Kleiner Tipp:
    require_once realpath(dirname(__FILE__)."/../../relativer/pfad/datei.php");

    Sowas geht immer und überall (relativ zu der Datei, in der es steht). ;-)
    hier ungetestet die meldung von php!:
    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!):
    <?php
    $rp = "/../../relativer/pfad/datei.php";
    require_once ( $r = realpath (dirname (__FILE__) . $rp)) ? $r: "/path/to/ERROR_404.php";
    ?>
    da kannst mit $rp (relativ-path) ein bisschen herumexperimentieren, dass du ein gefühl für die sache kriegst.

    Beitrag zuletzt geändert: 31.3.2010 17:19:13 von czibere
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!