Ankündigung

Einklappen
Keine Ankündigung bisher.

wert von include_once leeren

Einklappen

Neue Werbung 2019

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

  • wert von include_once leeren

    hallo leute,

    ich habe noch ein kleines Problemchen, es geht um include_once. Ich habe 2 subdomains auf denen sich jewals eine config.php datein befinden.

    beim aufruf der ersten domain include ich die config.php mit include_once, dann leite ich auf die subdomain und die config.php dieser domain wird nicht included, weil der dateiname config.php bereits included wurde.

    hier ein kleines beispiel

    subdomain1.test.de
    PHP-Code:
    session_start();
    $projects = array(
        
    'subdomain1.test.de' => 'subdomain1',
        
    'subdomain2.test.de' => 'subdomain2'
    );
    define("ROOT_DIR"'projects/' $projects[$_SERVER['SERVER_NAME']]);
    include 
    ROOT_DIR '/index.php';

    subdomain1.test.de/index.php
    PHP-Code:
    include_once ROOT_DIR.'/config.php';
    print_r($config); //ausgabe foo => bar
    echo '<a href="subdomain2.test.de">domain2</a>'
    subdomain2 hat die gleichen datein nur nur ist die variable $config leer, da config.php nicht neu included wurde.

    es würde zwar mit include funktionieren, jedoch habe ich in der config.php ein paar funktionen die sich dann in einer endlosschleife includen würden, desswegen include_once.

    gibt es denn nun eine möglichkeit , dem script zu sagen, dass er include_once wieder auf 0 setzen soll, da es sich um eine neue domain handelt?

    Wenn ihr es nicht verstanden habt, fragt nach. Ansonsten schon mal danke im vorraus

    MFG
    apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

  • #2
    Nein nicht das ich wüsste, das hört sich sehr nach schlechtem Design an. Du solltest dir nochmal genau überlegen wie oft du wo eine config Datei laden möchtest und ob das IMMER aus dem selben Ordner sein muss? Vlt. wäre es besser die Dateien dann in entsprechende Unterordner zu speichern um solche Probleme erst gar nicht zu haben.

    Kommentar


    • #3
      Wo inkludierst du denn sonst noch config.php außer in index.php? Ich verstehe ehrlich gesagt nicht, was das Problem mit den Subdomains zu tun haben sollte, du machst doch keinen include von sub1 nach sub2 oder? Erklär auch mal, was du mit "leite ich auf die subdomain" meinst.
      [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
      [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

      Kommentar


      • #4
        also ich habe einen projekte ordner mit einer fest vergebnen struktur

        projekte/
        -projekt1
        -projekt2
        index.php


        jedes dieser projekte, wird einer subdomain zugewiesen, dies geschiet in der index.php. jedes Projekt hat ein verzeichniss settings und da drin befindet sich eine config.php und andere .php datein mit allen möglichen einstellungen. also GeneralConfig (zb default user rechte, default sprache usw), ServerConfig (datenbank verbindung) usw.. manche projekte, hängen mit einander zusammen, d.h ich mache irgendwas auf subdomain1 und wenn ich fertig damit bin, gehe ich auf subdomain2 und somit auch in ein neuen ordner. die datein aus dem settings verzeichnis werden in einer schleife included und in manchen settings datein, wird die funktion aufgerufen um die datein im settings ordner zu includen, somit kommt das ganze zu einer endlos schleife, mit require_once passiert das ganze nicht mehr.

        habe gerade auf php.net die funktion get_included_files() gefunden, ich brauche irgendwas wie set_included_files(array(0)) oder so..

        @ fab, nein ich include keine datei von sub1 nach sub2, weiterleiten meinte ich eifach
        <a href="http://subdomain2.test.de">test</a>

        ich bin davon ausgegangen dass dann auf der neuen domain der script von vorn ausgeführt wird und alte datein aus require_once nicht mehr vorhanden sein sollten..
        apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

        Kommentar


        • #5
          Das ist auch richtig und deshalb liegt dein Fehler woanders.
          [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
          [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

          Kommentar


          • #6
            Ja pro HTTP Request wird einmal das Skript ausgeführt und dabei gilt include_once, wenn du nen komplett neuen Request machst ist das natürlich wieder von vorne an leer ....

            Kommentar


            • #7
              also einfach ein link mit einer anderen subdomain, reicht nicht aus für ein neuen http request?... dann muss ich mir was anderes überlegen.. danke erstmals ich werde ne runde grübeln, vllt fällt mir was neues ein.

              MFG
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

              Kommentar


              • #8
                Zitat von BlackScorp Beitrag anzeigen
                also einfach ein link mit einer anderen subdomain, reicht nicht aus für ein neuen http request?... dann muss ich mir was anderes überlegen.. danke erstmals ich werde ne runde grübeln, vllt fällt mir was neues ein.

                MFG
                WTF? Natürlich machst du einen neuen HTTP Request wenn du den Link anklickst. Ich sagte doch, dein Problem liegt ganz woanders, schau nach wo du die config sonst noch inkludierst.
                [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
                [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

                Kommentar


                • #9
                  Zitat von BlackScorp Beitrag anzeigen
                  also einfach ein link mit einer anderen subdomain, reicht nicht aus für ein neuen http request?... dann muss ich mir was anderes überlegen.. danke erstmals ich werde ne runde grübeln, vllt fällt mir was neues ein.

                  MFG
                  Ein Link startet einen neuen HTTP Request.

                  D.h. dein Fehler liegt woanders...

                  Alternative wäre Config und Funktionsdefinitionen voneinander zu trennen. Wäre an und für sich auch richtig weil Funktionsdeklarationen mit Konfigurationen eigentlich nichts gemeinsamen haben und es somit keinen Grund gibt beides in eine Datei zu kloppen.
                  "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                  Kommentar


                  • #10
                    @ Dark, eigentlich schon. Ich habe eine Klasse, die mir alle konfigurationsdatein einliest und mir das ergebnis ausgibt, welches ich angezeigt haben will. etwa so:

                    PHP-Code:
                    echo Config::read('general->templateDir'); //ausgabe : layout/test/ 
                    und diesen pfad, setze ich wiederum von einer config datei in eine andere..

                    ich habe mir mal meine daten ausgeben lassen und auf den ersten blick , sah die array struktur von der subdomain1 und 2 gleich aus, jedoch beim genauen hinschauen, waren die keys , anders verteilt und somit hat nichts funktioniert.. habs jetzt behoben.. ich würde gerne sagen woran es gelegen hat, aber ihr würdet über mich lachen

                    auf jedenfall ist problem behoben, vielen dank an euch

                    MFG
                    apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                    Kommentar

                    Lädt...
                    X