Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> przechwycenie wyjątku przy tworzeniu pliku, try catch fopen
damianooo
post
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Witam,

Mam problem z zapisem pliku w miejscu sieciowym na serwerze i chciałbym teraz poprzez przechwycenie wyjątku dowiedzieć się jaki jest problem, tzn. : czy jest problem z uprawnieniami , czy z błędną ścieżką czy może jeszcze coś innego ...

zrobiłem tak :

  1. try
  2. {
  3. $dane = "jakiś tam tekst\n";
  4. $file = "/zap/hurt/test.txt";
  5. $fp = fopen($file, "a");
  6. flock($fp, 2);
  7. fwrite($fp, $dane);
  8. flock($fp, 3);
  9. fclose($fp);
  10. }
  11. catch( Exception $e )
  12. {
  13. $danes = "Komunikat: ".$e->getMessage().". Plik: ".$e->getFile().". Wiersz: ".$e->getLine()."\r\n";
  14. $files = "info_log.txt";
  15. $fps = fopen($files, "a");
  16. flock($fps, 2);
  17. fwrite($fps, $danes);
  18. flock($fps, 3);
  19. fclose($fps);
  20. }


jednak nie uzyskuję żadnej informacji w pliku info_log.txt , a plik test.txt nie zostaje utworzony

Proszę o pomoc czy dobrze próbuję przechwycić wyjątek czy może powinienem to zrobić w inny sposób ...

dziękuję

Ten post edytował damianooo 29.11.2011, 09:52:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Nie no to co chcesz osiągnąć można osiągnąć, chociażby w ten sposób:

  1. <?php
  2.  
  3. if(is_readable($path))
  4. {
  5. if(is_writable($path))
  6. {
  7. file_put_contents($path, $dane);
  8. } else
  9. {
  10. throw new RuntimeException(sprintf('Brak uprawnień zapisu dla pliku: %s ', $path));
  11. }
  12. } else
  13. {
  14. throw new RuntimeException(sprintf('Podana ścieżka %s nie istnie, lub nie posiadasz uprawnień odczytu.', $path));
  15. }


Możesz jeszcze dodatkowo do tego dołożyć zamiast is_readable sprawdzanie czy to plik, czy to katalog, w sumie co chcesz. Męczące jest robienie tego często tam gdzie się chce coś zapisać/odczytać i fajnie by było gdyby php rzucało w takich przypadkach wyjątki jeżeli masz zdefiniowanego swojego handlera wyjątków, no ale jak już wyżej napisano, tak nie jest (IMG:style_emoticons/default/wink.gif)

Nie mniej, dokładnie więcej informacji się nie dowiesz, to że nie możesz zapisać tych danych to raczej najprawdopodobniej problem z uprawnieniami zapisu.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 10:38