PHP: Problem mit Verzeichnis auslesen
exciter
- php
Hi Community, ich hab mir folgendes Script geschrieben, um alle GIF und JPG Dateien des aktuellen Verzeichnisses auszulesen und mit Dateigröße auszugeben:
<?php
$handle = opendir(".");
while($file = readdir ($handle)) {
if($file != "." && $file != "..") {
$split=explode(".", $file);
if($split[1]=="gif" or $split[1]=="jpg") {
$size=filesize($file);
if($size<1000) {
$w="Byte";
}
else {
$size=$size/1000;
$w="Kbyte";
}
echo "$file - $size $w<br>";
}
}
}
closedir($handle);
?>
Leider bekomm ich neben dem Gewollten aber auch das geliefert:
Notice: Undefined offset: 1 in c:programmeapache groupapachehtdocsdir.phtml on line 6
Leider hab ich nicht die geringste Ahnung, wo der Fehler herkommt, hab mir alles 1000 mal durchgeschaut!
exciter.
Guten Morgen,
<?php
$handle = opendir(".");
while($file = readdir ($handle)) {
if($file != "." && $file != "..") {
$split=explode(".", $file);
if($split[1]=="gif" or $split[1]=="jpg") {
$size=filesize($file);
if($size<1000) {
$w="Byte";
}
else {
$size=$size/1000;
$w="Kbyte";
}
echo "$file - $size $w<br>";
}
}
}
closedir($handle);
?>Leider bekomm ich neben dem Gewollten aber auch das geliefert:
Notice: Undefined offset: 1 in c:programmeapache groupapachehtdocsdir.phtml on line 6
Ob da jetzt ein Fehler in Deinem Script ist, vermag ich so früh am Morgen nicht zu sagen. Aber es fehlt auf jeden Fall was:
Du berücksichtigst gar nicht, ob die zurückgelieferten Namen ihrerseits wiedr Verzeichnisse darstellen. Die Funktion is_dir() sollte da weiterhelfen. Und dann ist ggf. Rekursion angesagt.
Liebe Grüße aus http://www.braunschweig.de
Tom
Nochmal guten Morgen,
ich habe noch etwas Zeit gehabt und Dein Sktipt mal ausprobiert.
<?php
$handle = opendir(".");
while($file = readdir ($handle))
{
if (is_file)
{
$split=explode(".", $file);
if($split[1]=="gif" or $split[1]=="jpg")
{
$size=filesize($file);
if($size<1000)
{
$w="Byte";
}
else
{
$size=$size/1000;
$w="Kbyte";
}
echo "$file - $size $w<br>";
}
}
}
closedir($handle);
?>
So funktioniert es nun.
Wenn Du Deins mal in meine Formatierung umwandelst, wirst Du feststellen, dass reichlich schließende geschweifte Klammern fehlen. Kann sein, dass der Fehler also daher kam, kann aber auch sein, dass es am Filesize-Zugriff auf ein Verzeichnis kam (nehme ich eher an). Da die Kalmmern nicht balanciert waren, hat der Parser den Fehler wohl nicht der richtigen Zeilennummer zuordnen können. Das hat man oft bei fehlenden Klammern, Semikolen oder Häkchen.
Man müsste Editoren mit einem Raster im Hintergrund haben. Dann könnte man Klammerebenen leichter zuordnen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo!
sorry irgendwas stimmt hier mit dem Forum nicht:
Fehler
Die Daten scheinen unvollständig zu sein.
Ich habe nichts gemacht. Vielleicht klappts diesmal.
<?php
$handle = opendir(".");
while($file = readdir ($handle)) {
if($file != "." && $file != "..") {
$split=explode(".", $file);
if($split[1]=="gif" or $split[1]=="jpg") {
$size=filesize($file);
if($size<1000) {
$w="Byte";
}
else {
$size=$size/1000;
1 KB sind 1024 Bytes, nur so nebenbei.
$w="Kbyte";
}
echo "$file - $size $w<br>";
}
}
}
closedir($handle);
?>Leider bekomm ich neben dem Gewollten aber auch das geliefert:
Notice: Undefined offset: 1 in c:programmeapache groupapachehtdocsdir.phtml on line 6
Aha, vemutlich ne recht neue PHP-Version, bzw. Neuinstallation... Such mal im Archiv nach "PHP notice": http://selfsuche.teamone.de/cgi-bin/such.pl?suchausdruck=PHP+notice&feld=alle&index_4=on&hits=100 das Problem ist eine Einstellung in der php.ini, denn "Notice" wird normalerweise nicht ausgegeben.
Grüße
Andreas