Ankündigung

Einklappen
Keine Ankündigung bisher.

Aktueller Arbeitsordner/relativer Pfad ändern

Einklappen

Neue Werbung 2019

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

  • Aktueller Arbeitsordner/relativer Pfad ändern

    Hallo,

    ich möchte dem Code einen neune Basispfad zu Grund legen, an dem sich alles Orientieren soll.

    Angenommen ich bin im Verzeichnis:
    ./home/verwaltung/operatoren

    und führe dort eine Seite aus. Innerhalb der Seite includiere ich wiederrum Seiten aus
    ./home/seiten
    , welche Bilder aus
    ./home/bilder
    darstellen.

    Damit ich aber keine Darstellungsprobleme erhalte, wollte ich gerne den Basispfad auf ./home/ anstelle von ./home/operatoren/ setzen. D.h. alle relativen Pfadangaben beziehen sich dann auf "./home/" und nicht auf "./home/operatoren".

    Gibt es hierfür einen Trick oder eine Funktion?

    Viele Grüße und vielen Dank schonmal.


  • #2
    Ein include/require auf Basis des aktuellen Arbeitsverzeichnises ist keine gute Idee.
    Warum? Schau hier: PHP-Includes: Niemals ohne __DIR__
    PHP-Klassen auf github

    Kommentar


    • #3
      alternativ ein guter OOP Ansatz mit Autoloader (ist aber eher was für größere Projekte dafür aber auch extrem parktisch)
      Fatal Error: Windows wird gestartet

      Wie administriert man ein Netzwerk: Beispiel

      Kommentar


      • #4
        Schau mal in diesem Thread. Dort geht es im Grunde um das gleiche Thema.

        - http://www.php.de/server-hosting-und...auslagern.html

        Zumindest um den PHP-Teil mit den Includes. Zum HTML-Teil mit URL-Pfaden zu Bilddateien und dergleichen gab es hier neulich diesen Thread:

        - http://www.php.de/server-hosting-und...inwechsel.html

        Die allgemeine Antwort ist meines Erachtens immer: Nutze eine Architektur, die (per Rewriting) jeden Request, der nicht auf eine existierende Ressource (Bilder, CSS, …) zeigt, an ein einziges zentrales Script umleitet. In diesem Script kannst du $_SERVER['REQUEST_URI'] auslesen, um zu ermitteln, was dargestellt werden soll (Routing). Micro-Frameworks wie Silex demonstrieren ganz gut, wie das funktioniert.

        - http://silex.sensiolabs.org/

        Da würde ich in jedem Fall mal reinschauen.

        Kommentar


        • #5
          Zitat von jspit Beitrag anzeigen
          Ein include/require auf Basis des aktuellen Arbeitsverzeichnises ist keine gute Idee.
          Warum? Schau hier: PHP-Includes: Niemals ohne __DIR__

          es darf ruhig relativ bleiben. Ich möchte nur, dass meine dargestellte Seite denkt, dass sie in einem anderen Pfad liegt.

          Es ist ja so, wenn ich eine Datei aus "home" ausführe, gebe ich alle Pfadangaben in Relation zu "home" an. Wechsle ich nun zu einer Seite die im Ordner "seiten" liegt, muss ich alle relativen Pfadangaben in Bezug auf "seiten" machen.

          Nun möchte ich aber, dass die Seite im Ordner "seiten" denkt, dass sie in "home" liegt. Damit ich auch hier die Pfadangaben relativ zum Ordner "home" machen kann.

          Das wäre für mich die arbeitsärmste Lösung.



          Den Befehl __DIR__ kannte ich bislang nicht.
          Durch den einen Thread bin ich nun auf "set_include_path" gestoßen. Ich werde mal nachlesen, ob ich damit ein wenig gaukeln kann.

          Das Problem ist folgendes: Ich nutze den CKEditor um Dateien über eine Admin-Oberfläche zu bearbeiten.
          Nachdem ich nun ein paar Tests mit __DIR__ gemacht habe, verstehe ich auch, warum man die relativen Angaben niemals ohne dies machen sollte.. spart viel Ärger.

          Ich denke, dass ich die entsprechenden Dateien mittels __DIR__ modifiziere.
          Bin mir aber noch nicht sicher, wie ich das genau anstelle. Was am geschicktesten ist und am wenigsten Arbeit benötigt.

          Dazu direkt eine Frage: Wie kann ich mit Verwendung von __DIR__ einen Ordner zurück gehen?

          Viele Grüße und vielen Dank für die Antworten



          edit://
          Mir ist direkt was aufgefallen. Ich arbeite auf einem Windows System. Der Server mit Unix. Wenn ich das nun richtig sehe gibt "__DIR__" auf Windows einen anderen String zurück, als auf Unix. (\ anstelle der /) Damit kann ich das lokal gar nicht testen.

          Kommentar


          • #6
            Du kannst mit chdir das Arbeitsverzeichnis festlegen.

            Kommentar


            • #7
              mit chdir() und optional getcwd() scheint die Lösung einfach und möglich. Danke

              Kommentar

              Lädt...
              X