Ankündigung

Einklappen
Keine Ankündigung bisher.

Richiges setzen des Pfades

Einklappen

Neue Werbung 2019

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

  • Richiges setzen des Pfades

    Hallo

    Ich habe eine Datei die auf der obersten Ebene liegt, aber von verschiedenen Unterverzeichnissen aufgerufen wird. Die relative URL möchte ich nicht verwenden (z.B. http://www.xxx.com/datei.css) um nicht von der Domain abhängig zu sein.

    Bis anhin habe ich im ersten Unterverzeichnis ../datei.css angegeben - eine Ebene höher einfach datei.css. Damit ich aber nicht immer aufpassen muss wo ich stehe wollte ich nach Information über relative Pfade generell /datei.css angeben.

    Aber scheinbar funktioniert das nur aus Unterverzeichnissen - wenn ich "oben" stehe nicht? ist das korrekt?

    Grüsse aus dem Süden, nebbiolo

  • #2
    Geht es um PHP? Wenn ja, was meinst du mit "aufrufen"? "/datei.css" ist kein relativer Pfad, zumindest nicht unter UNIX-Systemen. Insgesamt sehe ich aber dein Problem nicht ganz. Ja, wenn du aus verschiedenen Pfaden mit relativer Angabe auf eine Datei zugreifst muss diese natürlich angepasst werden.

    PS.: Für Beispieldomains verwenden wir example.org/com. Diese ist nämlich dafür gedacht - wir wollen nicht wissen wo eine Domain mit "xxx" eines Tages mal hinführen könnte...

    Kommentar


    • #3
      @TE: Lies dir den mal aufmerksam durch und dann wenn noch Fragen sind, ev. mit konkreten Anwendungsszenarien wiederkommen: http://php-de.github.io/jumpto/pfade/
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Vielen Dank mal für die Informationen. #hausel -> habe ich gelesen ..
        Dennoch nochmals mein konkretes Problem:

        PHP-Code:
        <?php include("../style.php"); ?> // funktioniert aus Unterverzeichnis
        <?php include("/style.php"); ?>  // funktioniert auch aus dem Unterverzeichnis - aber nicht im Hauptverzeichnis
        <?php include("style.php"); ?>  // so funktioniert es im Hauptverzeichnis
        was mache ich falsch ... oder geht das nicht?

        Kommentar


        • #5
          Das aktuelle Arbeitsverzeichnis sprichst du mit "./" an. Ansonsten bestimmt der include_path wo und in welcher Reihenfolge nach der Datei gesucht wird. Darauf solltest du dich nicht verlassen.

          Kommentar


          • #6
            Ergänzend zu Tropi: http://www.ermshaus.org/2012/09/php-...emals-ohne-dir
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              nebbiolo kannst du dir nicht einfach eine Helferfunktion bauen die immer den Projektpfad davor setzt?
              PHP-Code:
              function path($file)
              {
                  
              $basePath = ...
                  return 
              $basePath.$file;
              }

              include 
              path('style.php');
              include 
              path('irgend/was.php'); 
              $basePath könnte dann sowas sein wie C:\web\projects\example\ oder /var/www/html/example/ und in Abhängigkeit von der Umgebung gesetzt werden. Also auf dem lokalen System hast du diesen und auf dem Production-System jenen Pfad. Die genaue Implementierung hängt vom Aufbau deiner Anwendung ab. Aber falls du mit einer einzelnen index.php als Einstiegspunkt arbeitest, könntest du dort mit __DIR__ den Projektpfad ermitteln und in der Funktion verwenden.

              Kommentar


              • #8
                es raucht bei mir

                das mit dem include_path finde ich optimal ... nur bekomme ich es nicht zum laufen ...

                PHP-Code:
                <?php include_path=("/"); ?> // auch mit .: und .; und /include versucht
                <?php include("style.php"); ?>
                was mache ich nun da wieder falsch?

                Kommentar


                • #9
                  Das was bei dem von mir geposteten Link steht sind Konfigurations-Einstellungen. Die gehören in die php.ini rein. Die dazugehörige Funktion heißt set_include_path(). (Und wie schon erwähnt, du willst include_path vermutlich nicht auf "/" setzen, das ist das Root-Verzeichnis, dort liegt vermutlich nichts.)

                  Kommentar


                  • #10
                    als ausgedienter Cobol Programmierer habe ich schon keine Ahnung von php ... in meinem Alter lernt man 5 Befehle und vergisst wieder deren 7

                    nun hab e ich meine erste php.ini (nur mit: include_path=".:/")angelegt ... es scheint zu funktionieren ...

                    Danke allen für die Geduld und Hilfe !!!

                    Kommentar


                    • #11
                      Und sobald es dann aufs Zielsystem deployed wird fängt der Spaß wieder an. Dann ist das Zielsystem aber irgend ein Webspace bei dem kein Zugriff auf die php.ini erlaubt ist und der Spaß wird noch größer.

                      Kommentar


                      • #12
                        PHP-Code:
                        <?php include("/style.php");
                        // funktioniert auch aus dem Unterverzeichnis - aber nicht im Hauptverzeichnis
                        Auf welcher Art von System soll das denn so funktionieren? Sicher, dass das der Fall ist?

                        Wenn mich nicht alles täuscht, müsste ein Linux-System dort die Datei "/style.php" (wie in „style.php im System-Root-Verzeichnis“) suchen und ein Windows-System wahrscheinlich die Datei "c:/style.php" (wie in „absoluter Pfad wird unter Windows zu Pfad mit Laufwerksbuchstabe“). Dass der Pfad mit Slash am Anfang in irgendeiner Form relativ aufgelöst wird, wäre (mir) neu.

                        nun hab e ich meine erste php.ini (nur mit: include_path=".:/")angelegt ... es scheint zu funktionieren ...
                        Auch das kann ich mir nicht vorstellen. Damit solltest du in einem Unterverzeichnis nicht include 'style.php'; ausführen können, um eine style.php aus dem Hauptverzeichnis zu erhalten. Es sei denn, du hast das Zeug alles direkt im System-Root (in / oder auf c: oder so) liegen. Das wäre höchst ungewöhnlich. (Na ja, kann aber sein, dass das in irgendwelchen virtualisierten Umgebungen Sinn ergibt. Ist mir noch nicht untergekommen.)

                        Kommentar


                        • #13
                          Zitat von monolith Beitrag anzeigen
                          Und sobald es dann aufs Zielsystem deployed wird fängt der Spaß wieder an. Dann ist das Zielsystem aber irgend ein Webspace bei dem kein Zugriff auf die php.ini erlaubt ist und der Spaß wird noch größer.
                          Meistens hat man doch sowieso auch eine Art config.php wo man diverse Parameter setzt, die lokal und live abweichen zB Datenbankzugangsdaten etc... Wenn du dir in der Datei einfach deinen BasisPfad als Config-Wert (Funktion, Konstante...) reinlegst dann hast du diese immer verfügbar.
                          The string "()()" is not palindrom but the String "())(" is.

                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar


                          • #14
                            Das ist das, wofür ich plädiere.

                            Kommentar

                            Lädt...
                            X