PHP Warning: filetype() [function.filetype]: Lstat failed

PEASANT KING

Commander
Registriert
Okt. 2008
Beiträge
2.412
Leider für mich total unerklärlich wieso ich aufeinmal diesen Fehler erhalte.

Hier mal der Code:
PHP:
<?php
$dir = "images";

if (is_dir($dir))
{
    if ( $handle = opendir($dir) )
    {
        while (($file = readdir($handle)) !== false)
        {
            if ( filetype( $file) == "file" AND substr($file, -4) == ".jpg")
            {
                // Dateiname wird im Array images gespeichert
                $images[] = $file;
                foreach ($images as $image)        
                      {
                      echo '<img src="'.$dir.'/'.$image.'">';
                      }
            }
        }    
    }
    closedir($handle);
}

?>
Lasse ich die Funktion filetype() weg läuft es, allerdings möchte ich nur die .jpg's ausgeben.
Hat Jemand vielleicht einen Rat ?
 
Das Problem ist, daß readdir() nur die Dateinamen selbst, aber nicht die Pfade zurückliefert. Dann kann filetype() die Datei nicht finden, weil es im Ausführungsverzeichnis des Skripts sucht statt in $dir. Du mußt also, statt nur mit $file, mit $dir.'/'.$file arbeiten - dann sollte es funktionieren.

Edit: Und bist du sicher, daß die foreach-Schleife da richtig plaziert ist? Ich würde die erst aufrufen, wenn das Array fertig befüllt ist, also nach dem Ende der while-Schleife.
 
Ein etwas eleganterer Weg, sich nur .jpg heraus zu picken wäre glob(). EIne Variante wäre:
PHP:
foreach(glob("images/*.{jpg,JPG}",GLOB_BRACE) as $image)
{
}
 
Zurück
Oben