Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: błedy obsugi systemu plików
Forum PHP.pl > Forum > PHP
Papub
witam,
chciałbym obsłużyć błędy np. tworzenia katalogu, otwierania katalogu itd poprzez zgłaszanie wyjątków. majac kod:

  1. if(false !== ($dir = @opendir($calyurl)) {
  2. while(false !== ($file = readdir($dir))) {
  3. if($file != '.' && $file != '..') {
  4. $danepliku = pathinfo($file);
  5. if(!is_dir($calyurl.'/'.$file)) {
  6. if(!unlink($calyurl."/".$file)) {
  7. throw new Exception('Błąd usuwania zdjęć z katalogu galerii', 10);
  8. }
  9. }
  10. }
  11.  
  12. }
  13. } else {
  14. throw new Exception('Błąd otwierania folderu galerii', 8);
  15. }


niestety to nie działa tak jak powinno. Nie tworzy wyjątku podczas próby otwarcia katlogu do którego nie ma się prawa:
czyli @opendir($calyurl) == false a wyjatek i tak nie jest zglaszany. proszę o pomoc. Pozdrawiam
marcio
Skorzystaj z http://www.php.net/manual/pl/class.directoryiterator.php i uzyj wyjatkow
Papub
No właśnie tego też próbowałem ale $dir = new DirectoryIterator('katalog co nie istnieje');
nie zwracał mi błedu. Czyli wyjątek się nie obsługiwał.

Mam w bloku try jeszcze wiecej innych zgłaszanych wyjątków.
robiłem tak

  1.  
  2. try {
  3. if($dir = new DirectoryIterator('katalog co nie istnieeje')) {
  4. //operacje na katalogu
  5. } else {
  6. throw new Exception('blad', 1);
  7. }
  8. } catch(Exception $e) {
  9. switch($e->getCode()) {
  10. case 1:
  11. echo $e-getMessage();
  12. exit();
  13. break;
  14.  
  15. case 2:
  16. //cos tam cos tam
  17. exit();
  18. break;
  19.  
  20. }
  21. }
  22.  



sprawdzenie czy katalog istnieje też mi nic nie daje. Bo tutaj chodzi i błąd braku praw do folderu. Użyć isWriteable?
marcio
No to masz metody isDir/isFile/isWritable/isReadable wykorzystaj w przypadku false zwroc wyjatek

p.s twoj kod nie rzuca wyjatku bo poprostu iterator dircetory nie udostpenia ich "natywnie"
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.