Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z usunięciem pliku
mrRosso
post 12.03.2013, 20:29:50
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

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


Witam mam dosyć nietypowy problem z którym się nigdy nie spotkałem.

Chcę usunąć plik "test.txt". W tym celu utworzyłem plik test.php w którym dodałem funkcję

  1. <?php
  2.  
  3. unlink("test.txt");
  4.  
  5. ?>


i wywołałem plik test.php przez przeglądarkę i tak, usunęło plik test.txt z czego się ucieszyłem. Natomiast to był tylko test i problem pojawia się gdy funkcję tą dodam do skryptu czat.php i wywołam ją komendą /usun która wygląda tak:

  1.  
  2.  
  3. else if ($msg[0] == "/usun") {
  4. if($online == 0)
  5. {
  6. exit("$kanal: musisz byc zalogowany !!");
  7. }
  8. if ($staff < 90 || $staff < jaki_staff($kanal, $numer))
  9. {
  10. echo "#$kanal: Nie posiadasz wystarczających uprawnień do użycia tej komendy!!";
  11. return "drop";
  12. }
  13. $nazwa = $msg[1];
  14. del_kanal($nazwa);
  15. unlink("test.txt");
  16. gg_say($from, $kanal, "usuwa kanał #$msg[1]!!.");


Komenda "prawie" działa jak należy, czyli wykonywane są wszystkie funkcje poza

  1. unlink("test.txt");


czemu tak jest? plik test.txt jest w tym samym katalogu więc to na pewno nie jest jego wina. Chmod'y ustawiłem też na 777 i to samo...

Będę wdzięczny za pomoc (+) wink.gif







Go to the top of the page
+Quote Post
_Borys_
post 12.03.2013, 20:54:32
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Dałeś fclose() przed unlink() ?
Go to the top of the page
+Quote Post
mrRosso
post 12.03.2013, 20:59:57
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

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


Nie dałem. Ale gdy wykonywałem funkcję z poziomu przeglądarki to funkcja działa czyli dla skryptu powinien być razem z fclose()?
Go to the top of the page
+Quote Post
_Borys_
post 12.03.2013, 21:03:41
Post #4





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


No tak ponieważ może być blokowany przez coś co odczytuje.
Go to the top of the page
+Quote Post
mrRosso
post 12.03.2013, 21:18:45
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

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


Działa, dzięki wielkie! smile.gif plusik leci ;P to teraz jak juz pytam to gdy będę chciał usunąć katalog w którym jest plik txt to też muszę użyć fclose()?
Go to the top of the page
+Quote Post
_Borys_
post 12.03.2013, 21:43:39
Post #6





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Tak czy owak katalog musi być pusty gdy go usuwasz.
Go to the top of the page
+Quote Post
mrRosso
post 12.03.2013, 21:56:37
Post #7





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

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


Chciałem takim sposobem ale nic z tego :/ Gdzie jest błąd?

  1.  
  2. $nazwa = $msg[1];
  3. fclose("/../baza_txt/logi/".$nazwa."/".$nazwa.".txt");
  4. unlink ("/../baza_txt/logi/".$nazwa."/".$nazwa.".txt");
  5. rmdir("/../baza_txt/logi/".$nazwa);
  6. del_kanal($nazwa);
  7. gg_say($from, $kanal, "usuwa kanał #$msg[1]!!.");
  8. exit("Kanal #$msg[1] został pomyślnie usunięty.");
  9. }
Go to the top of the page
+Quote Post
Pilsener
post 12.03.2013, 22:21:35
Post #8





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Cytat
Gdzie jest błąd?
- nie zaszkodzi sprawdzić: raz, czy plik/katalog można usunąć a dwa, czy faktycznie operacja się udała. Bo ja bym powiedział, że skoro wyświetla się:

  1. exit("Kanal #$msg[1] został pomyślnie usunięty.");
- to wszystko działa closedeyes.gif

Inaczej ciągle będziesz miał problemy tego typu i nie wiedział, gdzie jest przyczyna.
Go to the top of the page
+Quote Post
mrRosso
post 13.03.2013, 16:32:03
Post #9





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

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


Tak, masz rację mój głupi błąd, zrobiłem przez else i pokazało błąd przy usuwaniu folderu i naprawiłem to smile.gif
Go to the top of the page
+Quote Post
Pawel_W
post 13.03.2013, 23:22:52
Post #10





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


  1. fclose("/../baza_txt/logi/".$nazwa."/".$nazwa.".txt");

jakim cudem to niby działa, skoro zgodnie z manualem fclose przyjmuje jako parametr wskaźnik do otwartego pliku?
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 06:05