includen einer Datei

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • includen einer Datei

    Hallo,

    Habe schnon mal eine ähnliche Frage gestellt, jedoch bekam ich da keine ausreichende Erklärung.

    Habe eine Frage zu der include-Funktion.

    Habe in meinem "Hauptskript" ein "Nebenskript" eingebunden. Mittels folgendem Befehl.
    PHP-Code:
    include("./nebenskript.php"); 
    Die Datei Nebenskript.php befindet sich im selben Verzeichnis wie das Hauptskript. Deshalb der führende Punkt.

    Rufe ich nun im Browser mein Skript auf, funktioniert alles tadellos.
    Jetzt habe ich mir aber eine kleine Batch-Datei geschrieben welche das ganze in dos aufruft. Jedoch kann er hier nicht die zu includende Datei finden. Nur über den absoluten Pfad funktioniert es. Kann mir das mal bitte jemand erklären.

    Also ich möchte mit dem relativen Pfad arbeiten.

    Danke

  • #2
    Für Pfadangaben bei include, require uws. darfst du nicht vom Verzeichnis ausgehen, wo das Hauptscript liegt, sondern vom aktuellen Arbeitsverzeichnis. Das ist beim Aufruf über Web immer das Verzeichnis, wo das aufgerufene File liegt - daher hats bisher geklappt -, aber wenn du nun in der Konsole bist und ...

    host: /foo > cd /
    host: / > php /path/to/script.php

    sagst, dann ist / das aktuelle Arbeitsverzeichnis und dort kann PHP dein Include nicht finden.

    Kommentar


    • #3
      Danke für die präzise Antwort. Jetzt hab ich verstanden warum es nicht funzt.

      Gibt es denn dafür eine Lösungsmöglichkeit/Workarround um trotzdem relative Pfade tzu verwenden. Oder muss hier zwingend mit dem absoluten Pfad gearbeitet werden?

      Kommentar


      • #4
        du kannst mit dirname(__FILE__) immer den 'echten' dateipfad zu deiner datei bekommen.
        z.b.
        PHP-Code:
        require_once(dirname(__FILE__).'/news.php'); 
        permanent dirname(__FILE__) zu tippen kann aber lästig werden.


        mit ini_set('include_path') kannst du dann den include-path setzen, darfst aber dann nicht mehr './foo/bar/baz.php', sondern nur noch 'foo/bar/baz.php' verwenden, dann klappt's mit relativen pfaden - bzw. hängt php dann vor jedes include noch den include-path und findet die zu inkludierende datei.

        das geht zwar ein wenig auf die performance, normalsterbliche können diesen performanceverlust aber ignorieren und haben simpleren code.

        Kommentar


        • #5
          Danke. So funzt es einwandfrei

          Kommentar

          Lädt...
          X