Ankündigung

Einklappen
Keine Ankündigung bisher.

includen aus einem include Verzeichnissen von verschiedenen stellen aus?

Einklappen

Neue Werbung 2019

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

  • includen aus einem include Verzeichnissen von verschiedenen stellen aus?

    Hallo ich hab mal wieder eine Frage,

    PHP Version 5.2.11

    Also ich habe zum Beispiel folgende Ordnerstruktur(vereinfacht).

    /
    /include
    /test1/
    /test2/

    So in den Ordnern "/" ,"/test1" und "test2" habe ich eine Datei Namens "test.php"
    in "/include" eine mit den Namen "include.php".

    Ich will also von verschiedenen Ordnern aus die Datei include.php einbinden, ohne mit "../" usw. arbeiten zu müssen.

    Mein erster Ansatz folgender:
    Code von test.php(in allen Verzeichnissen gleich):
    PHP-Code:
    set_include_path(get_include_path().'/include/');
    echo 
    get_include_path();
    include(
    'include.php');
    phpinfo();
    echo 
    $test
    Code der include.php
    PHP-Code:
    $test='Hallo'
    So nun kommen folgende Meldungen:
    Für die test.php im Ordner "/":
    Code:
    .:/usr/share/php5/PEAR/include/
    Warning: include(include.php) [function.include]: failed to open stream: No such file or directory in /pages/7f/93/d0006895/home/htdocs/test.php on line 4
    
    Warning: include() [function.include]: Failed opening 'include.php' for inclusion (include_path='.:/usr/share/php5/PEAR/include/') in /pages/7f/93/d0006895/home/htdocs/test.php on line 4
    phpinfo:
    Local: include_path: .:/usr/lib/php/include/
    Master: include_path: .:/usr/lib/php

    Für die im "/test1":
    Code:
    .:/usr/lib/php/include/
    Warning: include(include.php) [function.include]: failed to open stream: No such file or directory in /pages/7f/93/d0006895/home/htdocs/test1/test.php on line 4
    
    Warning: include() [function.include]: Failed opening 'include.php' for inclusion (include_path='.:/usr/lib/php/include/') in /pages/7f/93/d0006895/home/htdocs/test1/test.php on line 4
    Local: include_path: .:/usr/share/php5/PEAR/include/
    Master: include_path: .:.:/usr/share/php5/PEAR

    Also er findet die Datei einfach nicht.
    Auch ein direktes einsetzten:

    PHP-Code:
    set_include_path('.:/usr/lib/php/include/');

    /*oder*/

    set_include_path('.:/usr/lib/php/include'); 
    bringt keinen erfolg.

    Also kann mir vllt. jemand auf die Sprünge helfen?
    Wie gesagt kurzum möchte ich von jedem Verzeichniss aus, egal welches Unterverzeichniss, auf den Ordner "/include" zugreifen können ohne mich mit "../" usw. durchhangeln zu müssen.

    Oder hat jmd. vllt. eine andere Idee wie ich z.B. Classen und Funktionen im gesamten Projekt einfach nutzten, also einbinden kann?

  • #2
    Zitat von ArtiHl Beitrag anzeigen
    .:/usr/lib/php/include/
    Warning: include(include.php) [function.include]: failed to open stream: No such file or directory in /pages/7f/93/d0006895/home/htdocs/test1/test.php on line 4

    Warning: include() [function.include]: Failed opening 'include.php' for inclusion (include_path='.:/usr/lib/php/include/') in /pages/7f/93/d0006895/home/htdocs/test1/test.php on line 4
    Augen aufmachen ... dass diese Pfade nichts miteinander zu tun haben, sieht man doch wohl.

    Wie gesagt kurzum möchte ich von jedem Verzeichniss aus, egal welches Unterverzeichniss, auf den Ordner "/include" zugreifen können ohne mich mit "../" usw. durchhangeln zu müssen.
    Dann gib den Pfad doch komplett an, in dem du Document_Root davor setzt.
    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

    Kommentar


    • #3
      Ok, danke.
      Da hab ich was falsch verstanden ich dachte das der standart include pfad:
      /usr/lib/php/
      das gleiche ist wie:
      /pages/7f/93/d0006895/home/htdocs/
      Hört sich für die Erfahrenden bestimmt blöd an, is aber so.

      So jetzt muss ich mir überlegen wie ich das ganze für verschieden testprojekte aller:
      /Pro1
      /Pro2
      umsetzte.
      Ich möchte ja nicht jedesmal wenn ich das komplette Projekt kopiere um was neues zu testen in jeder Datei die include-pfade ändern muss.
      An Hand das was ich bisher gelesen habe müsste ich eine config.php erstellen die ins Projekt-Root packen und dort via Konstante den Pfad festlegen.
      Dann brauch ich mich ja innerhalb des Projekts immer nur zur config.php durchhangeln und gut ist.

      Kommentar


      • #4
        War das letzte eine Frage oder einfach 'n satz ?

        Kommentar


        • #5
          Nen Satz mit falschem Satzzeichen.

          Kommentar


          • #6
            Mach folgendes Script in das Root-Verzeichnis, also dorthin, wo deine index.php liegt:

            PHP-Code:
            <?php 

            echo $_SERVER['SCRIPT_FILENAME'];

            ?>
            Dann wird ungefähr so was ausgegeben:
            /home/example_org/www/test.php

            Wenn du nun unter dem Root ein include-Verzeichnis liegen hast, dann ist der absolute Pfad dahin:
            /home/example_org/www/include

            Diesen Pfad würde ich allerdings auch nicht hardcodieren, sondern in eine spezielle config.php legen, die immer im gleichen Ordner ist wie deine Arbeitsdateien:

            PHP-Code:
            //config.php
            <?php
            $pfad 
            '/home/example_org/www/include';
            ?>
            In deinen Arbeitsscripten machst du dann nur ein include 'config.php' und hast dann $pfad zur Verfügung.
            [PHP]if ($var != 0) {
            $var = 0;
            }[/PHP]

            Kommentar


            • #7
              Besser wäre aber
              PHP-Code:
              <?php
                $pfad 
              $_SERVER['DOCUMENT_ROOT'] . '/include';
              ?>
              Dann funktioniert das auch auf unterschiedlichen Servern mit unterschiedlichen Verzeichnisstrukturen

              Kommentar


              • #8
                Japp - der Document Root war mir grade nicht eingefallen. So muss man nach einem Serverwechsel nirgends etwas ändern.
                [PHP]if ($var != 0) {
                $var = 0;
                }[/PHP]

                Kommentar


                • #9
                  Danke an alle die geholfen haben.
                  Ich hab das jetzt so gelöst:

                  config.php im Projektroot:
                  PHP-Code:
                  <?php
                  $Project_Name
                  ='/Pro1';
                  define('Project_Root'$_SERVER['DOCUMENT_ROOT'].$Project_Name);
                  define('Incl_Folder',Project_Root.'/include/');
                  define('Image_Folder',$Project_Name.'/images/');
                  ?>
                  Nun brauch ich nur noch Project_Name anpassen und gut ist.
                  Jetzt brauch ich nur noch aufpassen, wenn ich etwas online stelle das die Domain ja schon auf den entsprechenden Unterordner zeigt und in zeile 3 das $Project_Name weglassen.

                  (Den Thema erledigt Link klick ich morgen, falls doch noch wer was dazusagen möchte.)

                  Kommentar


                  • #10
                    Kleine Anmerkung dazu:
                    KONSTANTEN schreibt man üblicherweise in Großbuchstaben, damit sie sich optisch von $variablen unterscheiden.
                    Ansonsten sieht das brauchbar aus.
                    [PHP]if ($var != 0) {
                    $var = 0;
                    }[/PHP]

                    Kommentar


                    • #11
                      Ahh, ok.
                      Danke für deinen Hinweis.
                      Ich habe übrigends im allg. ein Problem damit vernüftige Namen für Variablen, Konstanten, Funktionen etc. zu finden.
                      Gibt es da auch allgemeine Einigungen(Richtlinien)?
                      Wie gehst du da vor?

                      Ich versuche immer einen Namen zu finden an dem ich persl. sofort erkenne was der Sinn dieser Var,Const etc. ist.

                      Allerdings sehe ich immer wieder wenn ich andere Scripts untersuche das die Namen, für mich gesehen, gar keinen Sinn machen(trotzdem ich das Script verstanden habe).

                      Ansonsten sieht das brauchbar aus.
                      Scheinbar net wirklich so doll.?

                      Kommentar


                      • #12
                        " Brauchbar " ist Schulnote 2.
                        Schulnote 1 wäre " Passt scho' "

                        Ich nehme meist deutschsprachige Bezeichner, also z.B. $vorname, $name, $strasse, $hausnummer nicht zuletzt auch deshalb, weil ich in einem zugekauften Script mal gelesen habe: $pre_name und $housenumber.

                        Wird in einem Team gearbeitet, dann macht es Sinn, dass jeder sich an die gleichen Regeln hält. Ein Beispiel für solch ein Regelwerk findest du hier:
                        http://blog.schuhbaum.info/zend/programmierrichtlinien
                        [PHP]if ($var != 0) {
                        $var = 0;
                        }[/PHP]

                        Kommentar


                        • #13
                          *G*Ok, was ist der Grund für eine 2 und keine 1.
                          Die Kleinschreibung der Konstanten sicher net, oder?

                          Danke für den Link, die Verarbeitung(also warum diese Regeln) muss ich ergooglen(und das dauert ein wenig).

                          Kommentar

                          Lädt...
                          X