scandir() Wirrwarr

TheBlack0

Mitglied
Hallo liebe Community,

derzeit Programmiere ich eine kleine Firmeninterne Webseite zur Regulierung unserer Kameras.
Hierzu will ich (wo wir auch direkt zu meinem Problem kommen), gerne alle Files aus den entsprechenden NAS Speicherorten auslesen.
Für dieses beispiel nehme ich unsere Axis Kamera, das Root-Verzeichniss befindet sich unter
"D:\AXIS\axis-00408CD1D2A0", Täglich wird ein ordner im Format "YYYMMDD" angelegt.
Nun will ich diesen Ordner auf alle vorhandenen Files überprüfen.

Hierzu habe ich folgendes Script gefunden:
PHP:
function getFileCount($path) {
    $size = 0;
    $ignore = array('.','..','cgi-bin','.DS_Store');
    $files = scandir($path);
    foreach($files as $t) {
        if(in_array($t, $ignore)) continue;
        if (is_dir(rtrim($path, '/') . '/' . $t)) {
            $size += getFileCount(rtrim($path, '/') . '/' . $t);
        } else {
            $size++;
        } 
    }
    return $size;
}

Um nun den Ordner auszulesen und die Dateien zu Zählen, gebe ich den Pfad an und generiere Automatisch das datum von heute.
PHP:
echo getFileCount("D:\AXIS\axis-00408CD1D2A0\".date("Ymd"));



Und nun erhalte ich folgende Fehlermeldung:
Code:
Warning: scandir(D:\AXIS\axis-00408CD1D2A0\20150818\,D:\AXIS\axis-00408CD1D2A0\20150818\): Das System kann den angegebenen Pfad nicht finden. (code: 3) in C:\xampp\htdocs\index.php on line 10

Warning: scandir(D:\AXIS\axis-00408CD1D2A0\20150818\): failed to open dir: No such file or directory in C:\xampp\htdocs\index.php on line 10

Warning: scandir(): (errno 2): No such file or directory in C:\xampp\htdocs\index.php on line 10

Kopiere ich den pfad, komme ich haber in den "angeblich nicht existierenden Pfad". (siehe Bild)
Unbenannt.PNG

Wie kann ich das ganze lösen?
Bedanke mich im voraus bei allen, die mir helfen :)

MFG
 
Hi,

entweder du ersetzt die "\" im Pfad durch normale "/", oder du escapest diese.
PHP:
// entweder (würde ich präferieren):
echo getFileCount("D:/AXIS/axis-00408CD1D2A0/".date("Ymd"));
// oder
echo getFileCount("D:\\AXIS\\axis-00408CD1D2A0\\".date("Ymd"));

Wundert mich direkt ein bisschen, dass da keine anderen Warnungen / Fehler kommen.

Grüsse,
BK
 
Hi, habe nun die Backslashes zu Forwardslashes geändert, fehler kommt trotzdem.

Hier noch einmal die Komplette liste an Fehlern:
Code:
Warning: scandir(D:/AXIS/axis-00408CD1D2A0/20150818/,D:/AXIS/axis-00408CD1D2A0/20150818/): Das System kann den angegebenen Pfad nicht finden. (code: 3) in C:\xampp\htdocs\index.php on line 10

Warning: scandir(D:/AXIS/axis-00408CD1D2A0/20150818/): failed to open dir: No such file or directory in C:\xampp\htdocs\index.php on line 10

Warning: scandir(): (errno 2): No such file or directory in C:\xampp\htdocs\index.php on line 10

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\index.php on line 11
C:/xampp/htdocs
Warning: scandir(D:\FTPRoot\LocalUser\camftp1\alarm\hof/2015-08-18/,D:\FTPRoot\LocalUser\camftp1\alarm\hof/2015-08-18/): Das System kann den angegebenen Pfad nicht finden. (code: 3) in C:\xampp\htdocs\index.php on line 10

Warning: scandir(D:\FTPRoot\LocalUser\camftp1\alarm\hof/2015-08-18/): failed to open dir: No such file or directory in C:\xampp\htdocs\index.php on line 10

Warning: scandir(): (errno 2): No such file or directory in C:\xampp\htdocs\index.php on line 10

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\index.php on line 11
C:/xampp/htdocs
Warning: scandir(D:\FTPRoot\LocalUser\camftp1\alarm\haupteingang/2015-08-18/,D:\FTPRoot\LocalUser\camftp1\alarm\haupteingang/2015-08-18/): Das System kann den angegebenen Pfad nicht finden. (code: 3) in C:\xampp\htdocs\index.php on line 10

Warning: scandir(D:\FTPRoot\LocalUser\camftp1\alarm\haupteingang/2015-08-18/): failed to open dir: No such file or directory in C:\xampp\htdocs\index.phpon line 10

Warning: scandir(): (errno 2): No such file or directory in C:\xampp\htdocs\index.php on line 10

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\index.php on line 11
C:/xampp/htdocs
Warning: scandir(D:/AXIS/axis-00408CD1D2A0/20150818/,D:/AXIS/axis-00408CD1D2A0/20150818/): Das System kann den angegebenen Pfad nicht finden. (code: 3) in C:\xampp\htdocs\index.php on line 10

Warning: scandir(D:/AXIS/axis-00408CD1D2A0/20150818/): failed to open dir: No such file or directory in C:\xampp\htdocs\index.php on line 10

Warning: scandir(): (errno 2): No such file or directory in C:\xampp\htdocs\index.php on line 10

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\index.php on line 11

Warning: scandir(D:\FTPRoot\LocalUser\camftp1\alarm\hof/2015-08-18/,D:\FTPRoot\LocalUser\camftp1\alarm\hof/2015-08-18/): Das System kann den angegebenen Pfad nicht finden. (code: 3) in C:\xampp\htdocs\index.php on line 10

Warning: scandir(D:\FTPRoot\LocalUser\camftp1\alarm\hof/2015-08-18/): failed to open dir: No such file or directory in C:\xampp\htdocs\index.php on line 10

Warning: scandir(): (errno 2): No such file or directory in C:\xampp\htdocs\index.php on line 10

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\index.php on line 11

Warning: scandir(D:\FTPRoot\LocalUser\camftp1\alarm\haupteingang/2015-08-18/,D:\FTPRoot\LocalUser\camftp1\alarm\haupteingang/2015-08-18/): Das System kann den angegebenen Pfad nicht finden. (code: 3) in C:\xampp\htdocs\index.php on line 10

Warning: scandir(D:\FTPRoot\LocalUser\camftp1\alarm\haupteingang/2015-08-18/): failed to open dir: No such file or directory in C:\xampp\htdocs\index.phpon line 10

Warning: scandir(): (errno 2): No such file or directory in C:\xampp\htdocs\index.php on line 10

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\index.php on line 11

P.S.: Die Pfade ziehe ich aus einer Datenbank, möglicherweise ist das noch ein wichtiger Faktor?

LG
 
Warum versuchst du die Pfade zu generieren. Du kannst doch den Ordner auslesen und dann mit den ausgelesen Pfaden weiterarbeiten - das ist nicht so fehleranfällig.
 
Warum versuchst du die Pfade zu generieren. Du kannst doch den Ordner auslesen und dann mit den ausgelesen Pfaden weiterarbeiten - das ist nicht so fehleranfällig.
´Theoretisch eine feine Sache, nur hat es viel zu viele Dateien in den Ordnern, um alles auszulesen.
Habe das ganze mal nachgesehen, und folgendes Ergebnis erlangt:
Unbenannt.PNG
Da müsste das PHP Script dann überall durchlaufen, und ich denke das würde ein wenig länger dauern.
 
4000 Dateien klingt jetzt erstmal nicht so viel. Die müssen ja nicht alle geöffnet werden, sondern nur der Name gelesen.
Hast du das mal getestet oder vermutest du es einfach?

Übrigens: Es gibt in PHP auf verschiedene Iteratoren, die sogar filterbar sind (um auf bestimmte Dateiendungen, Namen, Daten zu filtern): http://php.net/manual/de/filesystemiterator.construct.php
Da ist sogar ein Beispiel dabei um mal alle Dateinamen aus einem Verzeichnis auszugeben ;)

Edit: Hier noch ein Interessanter Artikel mit mehr Beispielen: http://www.the-art-of-web.com/php/directory-list-spl/
 
4000 Dateien klingt jetzt erstmal nicht so viel. Die müssen ja nicht alle geöffnet werden, sondern nur der Name gelesen.
Hast du das mal getestet oder vermutest du es einfach?

Übrigens: Es gibt in PHP auf verschiedene Iteratoren, die sogar filterbar sind (um auf bestimmte Dateiendungen, Namen, Daten zu filtern): http://php.net/manual/de/filesystemiterator.construct.php
Da ist sogar ein Beispiel dabei um mal alle Dateinamen aus einem Verzeichnis auszugeben ;)

Edit: Hier noch ein Interessanter Artikel mit mehr Beispielen: http://www.the-art-of-web.com/php/directory-list-spl/
Ich bin grade eine ticken weiter gekommen.
Habe , einfach mal aus Kuriosität, anstatt "D:/" zu scannen, "C:/" gescannt. Lustigerweise ging es jetzt.
Irgendwelche ideen, wie ich D:/.... auslesen kann?

LG
 
Zuletzt bearbeitet:
Ist D:/ irgendwie ein über FTP eingehangenes Laufwerk? Falls ja, versuch doch mal direkt auf den FTP Server zuzugreifen.
 
Ist D:/ irgendwie ein über FTP eingehangenes Laufwerk? Falls ja, versuch doch mal direkt auf den FTP Server zuzugreifen.
Ist ein Netzwerklaufwerk, und ich habe es auch schon probiert.
Auch hier sagt er wieder, das es nicht gefunden wurde.
Ich probiere mal aus, XAMPP auf dem dazugehörigen Server zu installieren, da das Script sowieso dort ausgeführt werden muss.
Ich berichte später über Ergebnisse.

LG
 
Wie hast du denn Probiert darauf zuzugreifen? Das geht nichtmehr ganz so einfach ;) Ja nach verwendetem Protokoll brauchst du da spezielle Funktionen oder Biblitoheken. Wenn das Skript eh auf dem Server laufen soll, wo die Daten drauf liegen, sind es natürlich wieder ganz normal Daeisystemoperationen ;)
 
Zurück