is_dir() werkt niet goed vanuit andere dan huidige directory

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ron Kraaijkamp

Ron Kraaijkamp

09/01/2007 13:54:00
Quote Anchor link
Goedendag,

het volgende is mijn probleem; ik run een PHP script van uit een bepaalde plaats om op andere plaats een directory listing te doen. Daarbij wil ik NIET de subdirs laten zien. OM e.e.a. te testen heb ik het volgende gemaakt.

Script naam en lokatie: /begin/test.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?

$path
="./";
$dir_handle=opendir($path);
while($file = readdir($dir_handle))
    {

     if (is_dir($file))
     {

      echo $file,' is a directory<br />';
     }

     else
     {
      echo $file,' is NOT a directory<br />';
     }
    }

closedir($dir_handle);
?>


Geeft als ouput:
. is a directory
.. is a directory
archief.php is NOT a directory
begin.php is NOT a directory
test.php is NOT a directory
gelukkignieuwjaar.jpg is NOT a directory
kerstblad.gif is NOT a directory
snow.gif is NOT a directory
vuurwerk.gif is NOT a directory
nieuws is a directory

En dat klopt.
Run ik nu hetzelfde script en geef een andere directory op, bijv:
$path="./"; wordt nu $path="./nieuws/";

dan wordt de output:
. is a directory
.. is a directory
berichten is NOT a directory
20061219.php is NOT a directory
20061220.php is NOT a directory

En dat klopt NIET, want "berichten" is WEL een directory.

Het lijkt er dus op dat is_dir() alleen goed werkt als het vanuit de huidige directory wordt gedraait.

Is dit een bug en hoe kan ik dat wel goed krijgen? Ik wil namelijk dit stukje code in een function.inc zetten die vanuit /inc gedraait wordt.

Groeten, Ron
 
PHP hulp

PHP hulp

23/12/2024 20:38:53
 
Joren de Wit

Joren de Wit

09/01/2007 14:17:00
Quote Anchor link
Dit zit hem in het feit dat je aan is_dir() niet de juiste locatie van de directory meegeeft. Je script controleert nu of file een directory is binnen de directory waar het script gedraaid wordt.

Je zult dus het volgende moeten gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(is_dir($path.$file))
?>
 
Ron Kraaijkamp

Ron Kraaijkamp

09/01/2007 14:32:00
Quote Anchor link
Hmmm,

je hebt gelijk. Hier kijk ik al twee dagen overheen. Ik had het met een juiste echo kunnen zien, denk ik zo.

Bedankt voor je snelle reactie,
Ron
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.