Ankündigung

Einklappen
Keine Ankündigung bisher.

include()

Einklappen

Neue Werbung 2019

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

  • include()

    Hallo,

    grad neu hier und auch total neu in Sachen PHP...
    Hab jetzt schon bisschen was probiert, aber irgendwie will es nicht, wie ich will.

    Folgendes Problem:
    Ich habe ein Script, das ich über include einbinde, was sich über ein weiteres Script zufällig Dateien aus einem bestimmten Ordner sucht und diese ausgibt.
    Das ganze sieht so aus:

    Code:
    <?php
    include ("includes/filepicker.inc.php");
    ?>
    Die filepicker.inc.php sieht so aus:

    Code:
    <?php
    require "dir.php";
    
    $randomfilename = randdir("adverts");
    $randomcontent = join(file("adverts/".$randomfilename),"\n");
    
    echo <<<EOF
    
    $randomcontent
    
    EOF;
    ?>
    und die Datei mit den Funktionen:

    Code:
    <?php
    
    function adir($dirname) {
    $handle=opendir($dirname); 
    $dirarray = array();
    while ($file = readdir($handle)) 
    {
    if ($file > "..") {array_push($dirarray,$file);}
    }
    closedir($handle);
    return $dirarray;
    }
    
    function randdir($dirname) 
    {
    srand ((double) microtime() * 10000000);
    $dirarray = adir($dirname);
    $rndfile = array_rand($dirarray);
    return $dirarray[$rndfile];
    }
    
    function print_array($array) { 
    if(gettype($array)=="array") { 
    echo "<ul>"; 
    while (list($index, $subarray) = each($array) ) { 
    echo "[*]$index <code>=&gt;</code> "; 
    print_array($subarray); 
    echo ""; 
    } 
    echo "[/list]"; 
    } else echo $array; 
    }
    
    ?>
    Solange sich dies auf der oberen Ebene abspielt, ok.
    Nun möchte ich die Datei filepicker.inc.php aber weiter mitnehmen; sie soll auch in andere Dateien included werden.

    Code:
    <?php
    include ("../includes/filepicker.inc.php");
    ?>
    Nun kommt die aber logischerweise nicht mehr mit der dir.php klar, weil die nun nicht mehr gefunden wird.

    Wie schaffe ich es, dass die Datei filepicker.php die Datei dir.php immer findet, damit das entsprechende Verzeichnis ausgelesen werden kann?

    Wäre super, wenn mir da einer helfen kann.

    Danke euch im Voraus.
    Gruß Ric

  • #2
    gib einfach den absoluten pfad an. Den siehst du ganz einfach bei jedem fatal error und bei anderen fehler, fängt meistens mit usr/ an, oder so ähnlich. Wenn das ganze auch auf anderen server laufen soll, gab es da glaube ich ne vordefinierte variable "DOCUMENT_ROOT", die war im $_SERVER oder $_ENV array glaube ich, schau dir die mal an. Wenn du das mit SCRIPT_NAME verbindest, und den dateinamen weghaust hast du ja den momentanten ordner, da hängste dann halt noch das "includes" dran und speicherst das in einer variable, die dann in der filepicker.inc.php vor dir.php gehangen wird. Alternativ kannst du auch versuchen was aus debug_backtrace rauszufiltern.
    Oder einfac

    Kommentar


    • #3
      Hi,

      wieso gibt es ein Problem?

      Liegt "dir.php" im includes-Verzeichnis und ist im include_path "." angegeben, dann sollte die Datei immer gefunden werden.

      Zitat von php.net Manual
      Dateien die mit include eingebunden werden, werden zuerst im include_path relativ zum gegenwärtigen Arbeitsverzeichnis gesucht und danach im include_path relativ zum Verzeichnis des ausgeführten Skripts. Zur Veranschaulichung: Falls Ihr include_path . entspricht, ist das gegenwärtige Arbeitsverzeichnis /www/. Sie haben über include include/a.php eingebunden und in diesem Skript steht die Anweisung include "b.php". In diesem Fall wird b.php zuerst im Verzeichnis /www/ gesucht und danach im Verzeichnis /www/include/.
      PS:
      $_SERVER["DOCUMENT_ROOT"] heißt das Ding. Das ist auch richtig.

      Kommentar


      • #4
        Hallo ihr,

        hab mit so schneller Antwort gar nicht gerechnet, aber supi.

        Also nach absoluter Pfadangabe hab ich nicht mehr viel verstanden.
        Die Variable $_SERVER gibt's in dem Script auch nicht. Aber ich denke mal, ich sollte die irgendwo definieren!?

        Es funzt zwar mit den absoluten Pfadangaben, aber gibt's nicht ne Möglichkeit, das anders zu regeln, sonst muss ich es ja wieder umschreiben, wenn ich es online stelle.

        Das Zitat hab ich heut auch schon paar Male durchgelesen... Aber um ehrlich zu sein, ich versteh's net; so auch nicht die Sache mit include_path. Ich weiß gar nicht wohin damit genau, einmal in der Datei oder bei jedem include()....? Keine Ahnung.

        Aber ich hab's gesagt, bin Neuling auf dem Gebiet
        Wäre echt dankbar, wenn das ein bisschen genauer geht...


        Danke euch
        Ric

        Kommentar


        • #5
          die variable $_SERVER müsste es eigentlic geben: http://www.php.net/manual/de/languag...predefined.php

          wegen include-path:
          http://de3.php.net/manual/de/functio...clude-path.php
          http://de3.php.net/manual/de/functio...clude-path.php

          Kommentar


          • #6
            Hi,

            vermutlich reicht es aus, wenn Du die Datei dir.php in das selbe Verzeichnis wie filepicker.inc.php legst.

            Kommentar


            • #7
              Hey,

              danke nochmals.
              Nu hab ich es verstanden. $_SERVER ist eine vordefinierte Variable.
              Klar, so funzt es auch mit dem Script:

              Code:
              <?php
              
              require $_SERVER['DOCUMENT_ROOT'].'/dir.php';
              
              $randomfilename = randdir($_SERVER['DOCUMENT_ROOT'].'/files');
              $randomcontent = join(file($_SERVER['DOCUMENT_ROOT'].'/files/'.$randomfilename),"\n");
              
              echo <<<EOF
              
              $randomcontent
              
              EOF;
              ?>
              Super....

              Schlaft gut.
              Gruß Ric

              Kommentar


              • #8
                Dann noch zwei Tipps:
                $randomcontent = join(file("adverts/".$randomfilename),"\n");

                echo <<<EOF

                $randomcontent

                EOF;
                Das kannst Du einfacher mit readfile haben. http://de2.php.net/readfile

                Solltest Du doch mal den Inhalt einer Datei im Speicher brauchen, gibt es mittlerweile http://de2.php.net/file_get_contents statt der join/file-Krücke.

                Kommentar

                Lädt...
                X