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?

  • ArtiHl
    antwortet
    *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).

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    " 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

    Einen Kommentar schreiben:


  • ArtiHl
    antwortet
    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.?

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    Kleine Anmerkung dazu:
    KONSTANTEN schreibt man üblicherweise in Großbuchstaben, damit sie sich optisch von $variablen unterscheiden.
    Ansonsten sieht das brauchbar aus.

    Einen Kommentar schreiben:


  • ArtiHl
    antwortet
    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.)

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    Japp - der Document Root war mir grade nicht eingefallen. So muss man nach einem Serverwechsel nirgends etwas ändern.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    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.

    Einen Kommentar schreiben:


  • ArtiHl
    antwortet
    Nen Satz mit falschem Satzzeichen.

    Einen Kommentar schreiben:


  • md5()
    antwortet
    War das letzte eine Frage oder einfach 'n satz ?

    Einen Kommentar schreiben:


  • ArtiHl
    antwortet
    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.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X