kaiser hans: nur bestimmte files eines ordners auslesen

hi leute!

ich möchte alle files eines ordners auslesen, die z.b. mit "haus_" beginnen.

soweit bin ich und weiß nicht weiter:

$pfad = "/bilder/";
$path = opendir($pfad);
while ($ordner = readdir ($path))
{
  if ($ordner != "." && $ordner != "..")
  {
 $allfiles[ ] = $ordner;
  }
}
closedir($path);

danke für hilfe,
euer herr kaiser

  1. Hallo,

    ich möchte alle files eines ordners auslesen, die z.b. mit "haus_" beginnen.

    sieh Dir bitte die Funktion glob() an.

    Gruß aus Berlin!
    eddi

    --
    Wer Rechtschreibfehler findet, darf sie behalten.
    1. hi!

      foreach (glob("$aktpath") as $filename)

      {
       $fdata = fopen($filename,"r");
      .
      .
      .
      }

      funktioniert nicht... wenn ich den pfad manuell eingebe statt $filename, funktionert alles wunderbar!

      warum ist das so???

      lg,
      euer kaiser

      1. hallo,

        warum ist das so???

        wahrscheinlich deswegen, weil du den absoluten Pfad angeben musst zB so:

          
        $fdata = fopen("/pfadangabe/".$filename,"r");  
        
        

        Grüße aus Berlin,

        tufi

        1. Nabend,

          $fdata = fopen("/pfadangabe/".$filename,"r");

          ^^^^^
          es dreht sich um das Auslesen eines Verzeichnisinhalts...

          Gruß aus Berlin!
          eddi

          --
          Wer Rechtschreibfehler findet, darf sie behalten.
          1. hallo,

            es dreht sich um das Auslesen eines Verzeichnisinhalts...

            nachdem ich in seiner Posting fopen las, ging ich automatisch davon aus, dass er erst das Verzeichnis auslesen möchte umd danach die Dateien auslesen zu können.

            Grüße aus Berlin,

            tufi

            1. hi leute!

              ich versuche eigentlich auf textfiles zuzugreifen...

              1. sieht Dir bitte auch chdir(), denn ich vermute, Dir ist noch nicht klar geworden, daß Du Files nicht aus dem PWD auslesen willst, sondern aus einem Unterverzeichnis ("/bilder").

                Gruß aus Berlin!
                eddi

                --
                Wer Rechtschreibfehler findet, darf sie behalten.
                1. was heisst PWD???

                  ich will die files in wahrheit aus ienem komplett anderen verzeichnis auslesen, als dort wo das php-skript liegt...

                  die frage ist außerdem ja, warum die seite einfach nciht interpretiert wird?
                  wie gesagt, wenn man die seite aufruft, passiert einfach NICHTS, als ob man gar keine url eingegeben hätte...

                  1. was heisst PWD???

                    Die Umgebungsvariable PWD steht jedem Prozeß zu Verfügung und beschreibt das Prozessarbeitsverzeichnis.

                    ich will die files in wahrheit aus ienem komplett anderen verzeichnis auslesen, als dort wo das php-skript liegt...

                    Wie Dir vielleicht aufgefallen sein könnte, ist mir das auch schon gewahr geworden...

                    die frage ist außerdem ja, warum die seite einfach nciht interpretiert wird?

                    Vielleicht hättest Du diese Frage dann auch stellen sollen...
                    Woran siehst Du, daß Dein Script nicht interpretiert wird?

                    wie gesagt, wenn man die seite aufruft, passiert einfach NICHTS, als ob man gar keine url eingegeben hätte...

                    Das ist meistens bei Fehlern so... - nur wie soll man Dir helfen, wenn Du Dich nciht richtig erklärst?
                    Was meinst Du zum Beispiel hier mit "als ob man gar keine url eingegeben hätte"? Meinst Du im Browser, meinst Du im Script, meinst Du was ganz anderes?

                    Gruß aus Berlin!
                    eddi

                    --
                    Wer Rechtschreibfehler findet, darf sie behalten.
                    1. hi!

                      wenn ich die seite aufrufe (per direkteingabe in den browser)
                      dann passiert absolut nichts. nicht  das geringste.

                      es ist als ob ich keine url eingegeben hätte.

                      wenn ich z.b. auf google gehe und warte bis die seite vollständig angezeigt ist, dann die url meines skripts eingebe und die seite aufrufen will, dann passiert genau gar nichts.
                      google bleibt stehen und es sieht aus, als hätte ich keine neue adresse eingegeben...

                      und das tritt nur auf, wenn ich die schleife so habe, dass sie funktionieren müsste. (code bereits gepostet)

                      lg,
                      der kaiser

                      1. Poste bitte das gesammte Script ohne Auslassungen!

                        (Da von Dir beschreibene Verhalten, kenne ich auch.)

                        Bitte mach Angaben zum Webserver und dessen Version (Vermutlich Apache und 2.0.x), das OS und ob Du Zugriff auf die zentrale Konfigurationsdatei des Servers hast!

                        Gruß aus Berlin!
                        eddi

                        --
                        Wer Rechtschreibfehler findet, darf sie behalten.
                        1. hi!

                          ja, habe zugriff auf ajeglichste konfig-skripts.
                          apache 2.x
                          php 4.3.9
                          redhat maschine

                          hier der komplette code:

                          <?

                          aus externer datei:
                          $aktpath = "/KOMPLETTERPFAD/";

                          //scan all logfiles

                          $aktpath12 = $aktpath1 . "fdaten*";
                          foreach (glob("$aktpath12") as $filename)

                          {
                           $file = stristr($filename, 'haus');
                           $fdata = fopen("/$aktpath1/".$file,"r"); // KRITISCHER BEREICH
                           if ($fdata != "")

                          {

                          while(!feof($fdata))

                          {

                          //hier tut sich einieges...
                            }

                          fclose($fdata);

                          }

                          }

                          ?>

                          danke!!!

                          1. Vermutlich setz eine Beschränkunsverlezung der durch http://httpd.apache.org/docs/2.2/mod/core.html#rlimitcpu (und ff.) bestimmte Grenzwerte ein. Der Apache 2.0.x reagiert darauf etwas eigenwillig mit einem Verbindungsabbruch.

                              
                            
                            > <?php  
                            
                            chdir("/KOMPLETTERPFAD/");  
                              
                            
                            > foreach (glob("fdaten*") as $filename)  
                            >   
                            > {  
                            
                            /* sieh doch bitte erstmal an, was */  
                            echo $filename."<br />";  
                            /* macht, bevor Du sowas verzapfst: */  
                            
                            >  $file = stristr($filename, 'haus');  
                            
                            

                            Die Funktion stristr() hat hier nichts verloren! Oder Glaubst Du, das FALSE ein formschöner Filename für fopen() ist ;)

                            Gruß aus Berlin!
                            eddi

                            --
                            Wer Rechtschreibfehler findet, darf sie behalten.
                            1. hi nochmal!

                              also hab ich jetzt folgendes verwendet:
                              chdir($aktpath1);
                              foreach (glob("fdaten*") as $filename)
                              {
                               echo $filename."<br />";
                               $fdata = fopen($filename,"r");
                              .
                              .
                              .
                              .
                              .

                              selbe reaktion.... es passiert wieder genau gar nichts...
                              irgendeine idee?

                              1. Re:

                                was gibt folgenses Script aus:

                                  
                                <?php  
                                header('Content-Type: text/plain');  
                                chdir("/der/korrekte/pfad"); # bitte anpassen  
                                $a=glob("fdaten*");  
                                print_r($a);  
                                exit; # ist hier nur symbolisch gemeint, das nicht mehr abgearbeitet werden soll  
                                ?>  
                                
                                

                                Gruß aus Berlin!
                                eddi

                                --
                                Wer Rechtschreibfehler findet, darf sie behalten.
                                1. hi!

                                  das tolle array mit allen textfiles...
                                  funktioniert ohne probleme.

                                  ich hab mittlerweile ein skript, dass zwar durchläuft, aber nach erfolgreichem durchlauf einfach aufhört das php-skript weiter zu interpretieren.

                                  hier der code:

                                  chdir($aktpath1);
                                  foreach (glob("fdaten*") as $filename)
                                  {
                                   $fp=fopen('' . $aktpath1 . '' . $filename . '',"r");
                                   while($line=fgets($fp,1024))
                                   {
                                    echo "$line<br>";

                                  $alldata[] = array('wert1' => $wert1, 'wert2' => $wer2);

                                  }
                                   fclose($fp);
                                  }

                                  ich lasse während des durchlaufes $wert immer ausgeben, die stimmen auch alle. wenn ich keine ausgabe mache, tritt wieder besagter fehler
                                  auf. gebe ich mit print_r das array aus, ebenfalls der fehler...

                                  lg aus wien,
                                  der kaiser

                                  1. hi!

                                    kleiner nachtrag.
                                    wenn ich den plain-text header verwende, bekomme ich eine gänzlich leere seite, ABER sie wird zumindest ausgeführt...

                                  2. Re:

                                    folgende Theorie:

                                    Dein Errorreporting ist nicht "scharf geschaltet" (oder Meldungen werden möglicherweise sogar nur in einem LogFile abgelegt), der Inhalt aller TextFiles, welches im Datenfeld $alldata abgelegt wird, überschreitet den zulässigen Speicherverbrauch und der Server killt den Prozess.

                                    D. h. für Dich, daß Du die Konfiguration PHPs nochmals eingehend bearbeitest, sodaß alle Fehlermeldungen, Warnungen und Notizen ausgegeben werden (error_reporting(2047);). Möglicher Weise wurde PHP auch ohne --enable-memory-limit kompiliert und es setzt eine vermutete Beschränkung des Apachen ein. Dann solltest Du Dir überlegen, wie Du Dein Script resourcenschonender Aufbaust, oder wie das Script der zu verarbeitenden Datenmenge mit temporären Datein Herr wird.

                                    Genaueres zu sagen ist natürlich immer schwer, weil ich nicht direkt vor allen einzulesenden Datein sitze, noch die genaue Server-SAPI-Konstellation und Konfiguration kenne. Vielleicht ist es Dir möglich den Quellcode des _gesamten_ Scripts per Verweis hier zugängig zu machen und auch die Ausgabe von phpinfo() wäre hilfreichzu referenzieren.

                                    Gruß aus Berlin!
                                    eddi

                                    --
                                    Wer Rechtschreibfehler findet, darf sie behalten.
        2. hi!

          auch wenn ich den absoluten pfad angebe funktioniert genau gar nichts.
          die seite wird nicht mal geladen, als wäre in der navigation kein link  gesetzet...

          ich kapiers nicht...
          hier der code:

          $aktpath1 = "/verzeichnispfad";

          $aktpath12 = $aktpath1 . haus_*";
          foreach (glob("$aktpath12") as $filename)

          {
           $file = stristr($filename, 'fdaten');
           $fdata = fopen("/$aktpath1/".$file,"r");
          .
          .
          .
          }

          ich versteh den server nicht mehr...
          php version 4.3.9

      2. Ew. Majestät,

        funktioniert nicht...

        ist keine Fehlerbeschreibung, auf der man konstruktiv aufbauen kann! Welche Fehlermeldungen werden angezeigt? Wie sieht $aktpath aus?

        Gruß aus Berlin!
        eddi

        --
        Wer Rechtschreibfehler findet, darf sie behalten.