Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: is_dir, nie działa w podkatalogach
Forum PHP.pl > Forum > PHP
Pogański
Witam. Mam następujący problem. Używając scandir() i is_dir() , nie mogę z poprawnym rezultatem sprawdzić czy dany plik jest katalogiem czy nie. Tzn, mogę, ale tylko dopóki, dopóty index.php w którym znajduje się kod, jest w tym samym folderze ktorego zawartość skanuje, kiedy wchodzę dalej, w których podkatalog, prawidłowe foldery przez is_dir() są oceniane jako FALSE.

W praktyce:

Kod
+Folder .
     +Folder1
         -dokument tekstowy.txt
         -Folder11
         -Folder12
         -Folder13      
      +Folder2
      +Folder3
      -index.php


index.php :
  1. <?php
  2.    
  3.    $dir = &#092;".\";    
  4.    $files = scandir($dir);
  5.    $count = count($files);
  6.    
  7.    for($i = 0; $i != $count; $i++){
  8.        if($files[$i] != &#092;".\" && $files[$i] != \"..\"){
  9.            if(is_dir($files[$i]) == true){        
  10.                echo(&#092;"\".$files[$i].\" IS A DIR
  11. &#092;");
  12.            }else{
  13.                echo(&#092;"\".$files[$i].\" IS NOT A DIR
  14. &#092;");
  15.            }
  16.        }else{}
  17.    }
  18.  
  19. ?>


efekt:
Kod
-------------------------------------------
folder1 IS A DIR
folder2 IS A DIR
folder3 IS A DIR
index.php IS NOT A DIR
-------------------------------------------


Czyli póki co, git! ale gdy zmienię $dir = "."; na $dir = "./folder1";
efekty są następujące:
Kod
--------------------------------------------
dokument tekstowy.txt IS NOT A DIR
folder11 IS NOT A DIR
folder12 IS NOT A DIR
folder13 IS NOT A DIR
--------------------------------------------


Wszystkie foldery to przed chwilą stworzone nowe foldery, dokument tekstowy kontrolnie. Nie mam pojęcia, dlaczego nie daje TRUE dla podkatalogow... może ktoś z was mi coś podpowie. Byłbym bardzo wdzieczny.


Pozdrawiam.
Pogański.
krowal
Spróbuj tak:
  1. <?php
  2.   error_reporting(E_ALL);
  3.  
  4.   $dir = ".";    
  5.   $files = scandir($dir);
  6.   $count = count($files);
  7.  
  8.   for($i = 0; $i != $count; $i++){
  9.       if($files[$i] != "." && $files[$i] != ".."){
  10.           if(is_dir($dir.'/'.$files[$i]) == true){ // przekazywałeś złą ściężkę funkcji is_dir()
  11.               echo("<b />".$files[$i]."</b> IS A DIR <br />");
  12.           }else{
  13.               echo("<b />".$files[$i]."</b> IS NOT A DIR <br />");
  14.           }
  15.       }else{}
  16.   }
  17.  
  18. ?>
skowron-line
Może jestem nudny no ale dlaczego nie użyjesz http://luktom.net/blog/112-iteratory-w-php...rectoryiterator tylko bawisz się w jakieś county
directoryIterator powie Ci wszystko o plikach i folderach które chcesz wyciągnąć z katalogu.

( 5min w innym poście to pisałem. )
Spawnm
Proszę poprawić tytuł na bardziej sensowny.
Pogański
Dlatego że jak piszę coś sam od początku do końca, to zawsze się czegoś uczę, z tego samego powodu nie ściągam nigdy skryptów typu "licznik", i innych tego rodzaju od których roi się aż w sieci. Dużą satysfakcję daje mi, jak po napisaniu całego skryptu/strony, mogę sobie szczerze powiedzieć, że każda literka została tam postawiona przeze mnie, i doskonale rozumiem jak działa.

Dzięki Krowal. Wszystko działa. Błąd jak zwykle banalny.
skowron-line
Bardzo nas cieszy fakt iż sam piszesz swoje skrypty ale link który ci podałem był do tutka żebyś się nie miotał.
A iteratory są częścią SPL
http://www.php.net/~helly/php/ext/spl/spl_8php.html
tak jak scandir są częścią PHP wersji 5
konradg
Tutaj masz opisane jak używać is_dir
http://www.drzewo-wiedzy.pl/?page=artykul&id=57
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.