phpbar.de logo

Mailinglisten-Archive

[php] bug in dir() ...

[php] bug in dir() ...

Wolfgang Draskovic php_(at)_phpcenter.de
Thu, 28 Feb 2002 01:41:57 +0100


.... oder doch mein Fehler?

Hallo Liste

ich will für die Navigation die Ordnerstruktur als Linkliste wiedergeben. 
Dazu hab ich mir eine kleine Funktion geschrieben, die ein angegebenes
Verzeichnis rekursiv durchsucht.

Wenn sich nun in einem Verzeichnis eine Datei mit dem selben Namen wie das
Verzeichnis selbst befindet kommt es zu Problemen - aber nur manchmal. 

folgendes geht nicht:
wolfgang_(at)_manitou:~/public_html/test > ls -alR
..:
insgesamt 6
drwxr-xr-x    3 wolfgang users          77 Feb 28 01:24 .
drwxr-xr-x   12 wolfgang users         339 Feb 27 22:32 ..
drwxr-xr-x    2 wolfgang users          71 Feb 28 01:27 bb
-rw-r--r--    1 wolfgang users         476 Feb 28 00:38 test.php

../bb:
insgesamt 1
drwxr-xr-x    2 wolfgang users          71 Feb 28 01:27 .
drwxr-xr-x    3 wolfgang users          77 Feb 28 01:24 ..
-rw-r--r--    1 wolfgang users           0 Feb 27 22:38 bb
wolfgang_(at)_manitou:~/public_html/test > 


merkwürdigerweise hilft aber ein touch bb/aa
und jetzt gehts

wolfgang_(at)_manitou:~/public_html/test > ls -alR
..:
insgesamt 6
drwxr-xr-x    3 wolfgang users          77 Feb 28 01:24 .
drwxr-xr-x   12 wolfgang users         339 Feb 27 22:32 ..
drwxr-xr-x    2 wolfgang users          71 Feb 28 01:27 bb
-rw-r--r--    1 wolfgang users         476 Feb 28 00:38 test.php

../bb:
insgesamt 1
drwxr-xr-x    2 wolfgang users          71 Feb 28 01:27 .
drwxr-xr-x    3 wolfgang users          77 Feb 28 01:24 ..
-rw-r--r--    1 wolfgang users           0 Feb 28 01:27 aa
-rw-r--r--    1 wolfgang users           0 Feb 27 22:38 bb
wolfgang_(at)_manitou:~/public_html/test > 

und hier noch test.php
<schnipp>

<?
function rd($dir) {
  $olddir=getcwd();
  chdir($dir);
  $dir="./";
  $handle=opendir($dir);

  while ( false != ($entry=readdir($handle)) ) {
    if ($entry != "." && $entry != "..") {
      echo getcwd(),"/<b>$entry</b> is a ";
      if ( is_dir($entry) ) {
	echo "<b>DIR</b><br>";
	rd($entry);
      } else {
	echo "<b>FILE</b><br>";
      }
    }
  }
  closedir($handle);
  chdir($olddir);
}

$dir = "/home/wolfgang/public_html/test/";
// $dir = getcwd();
rd($dir);
?>

<schnapp>

kann mir das mal einer erklären?
habs auch schon mit dir->read() probiert - das selbe in Lila

any hints
Gruß Wolfgang


-- don't panic                 .  ,
                              (\;/)
                             oo   \//,        _
                           ,/_;~      \,     / '
wolfgang_(at)_mentaltec.de      "'    (  (   \    !
Wolfgang Draskovic               //  \   |__.'
                               '~  '~----''
"I hear that if you play the NT 4.0 CD backwards, you get a Satanic message!"
"That's nothing. If you play it forward, it installs NT 4.0!"


php::bar PHP Wiki   -   Listenarchive