Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Utworzenie pliku, jeśli ten nie istnieje
Forum PHP.pl > Forum > Przedszkole
mrRosso
Witam, nie mogę uporać się z takim problemem. Mam bota, do którego jak się napisze pierwszy raz to tworzy katalog a w nim plik tekstowy o nazwie zmiennej $from, czyli w tym przypadku numer gg. Skleciłem kod i tworzy on ładnie katalog o nazwie $from, w nim plik txt o nazwie $from i dodatkowo zapisuje to, co użytkownik przesłał do skryptu i o to mi chodziło. Ale problem powstaje, jeśli ten sam użytkownik napisze ponownie(bo katalogi etc. z jego numerem są już utworzone) to wyrzuca błąd, że taki katalog itd itd już istnieje. To użyłem funkcji file_exists() z nadzieją, że pomoże, ale chyba coś źle robię... Niżej zamieszczam kod, proszę o pomoc.


  1. $plik = $from; //deklaracja ścieżki do pliku
  2. $sprawdz = file_exists($plik); //sprawdzenie czy plik istnieje
  3. if (!$sprawdz) //jeżeli plik nie istnieje (zmienna $test=FALSE)
  4. {
  5. mkdir('./baza/'.$from, 0777);
  6. }
  7. else
  8. {
  9. }
  10. $tresc = (implode(" ", $msg));
  11. $kiedy = date("(Y-m-d H:i)");
  12. if($fp = fopen('baza/'.$from.'/'.$from.'.txt', 'a+'));
  13. if(fwrite($fp, "<$from>[$kiedy]: $tresc\n\r"));
  14. if(fclose($fp))


Próbowałem również tak, ale wtedy sypie błędami, że źle klamry są


  1. $plik = $from; //deklaracja ścieżki do pliku
  2. $sprawdz = file_exists($plik); //sprawdzenie czy plik istnieje
  3. if (!$sprawdz) //jeżeli plik nie istnieje (zmienna $test=FALSE)
  4. {
  5. mkdir('./baza/'.$from, 0777);
  6. }
  7. else
  8. {
  9. $tresc = (implode(" ", $msg));
  10. $kiedy = date("(Y-m-d H:i)");
  11. if($fp = fopen('baza/'.$from.'/'.$from.'.txt', 'a+'));
  12. if(fwrite($fp, "<$from>[$kiedy]: $tresc\n\r"));
  13. if(fclose($fp))
  14. }
widmo_91
Najprościej będzie użyć file_put_contents z flagą FILE_APPEND

  1. file_put_contents($plik, $dane, FILE_APPEND)


Jeżeli plik nie istnieje to go utworzy, jeżeli istnieje to dopiszę na końcu.
mrRosso
To muszę tej funkcji użyć zamiast tych dwóch funkcji file_exists i mkdir czy tylko jednej i jakiej?
widmo_91
Zamiast tych 2, wyżej opisałem jej działanie.
mrRosso
Prawie dobrze, ale teraz jest tak.

Jeśli jest katalog o nazwie $from to ta funkcja, którą podałeś tworzy w niej plik txt też o nazwie $from i to jest dobrze, ale jeśli nie ma katalogu to wywała error, że takiego nie ma. A ta funkcja, którą podałeś, tworzy tylko plik a katalogu nie.

  1. $tresc = (implode(" ", $msg));
  2. $plik = 'baza/'.$from.'/'.$from.'.txt'; //deklaracja ścieżki do pliku
  3. file_put_contents($plik, $tresc, FILE_APPEND);


a ten błąd to

  1. <br />
  2. <b>Warning</b>: file_put_contents(baza/7345200/7345200.txt) [<a href='function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in <b>/home/rosso16/public_html/bot/bot.php</b> on line <b>295</b><br />


widmo_91
  1. $tresc = (implode(" ", $msg));
  2. $plik = 'baza/'.$from.'/'.$from.'.txt'; //deklaracja ścieżki do pliku
  3. if (!file_exists('baza/'.$from)) mkdir('baza/'.$from);
  4. file_put_contents($plik, $tresc, FILE_APPEND);
mrRosso
teraz jest super! dzięki wielkie za pomoc i oczywiście piwko leci! wink.gif
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.