Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php] unlink problem
Hannon
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.02.2005

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


Jak usunąć plik zagłębiony o dwa ?
próbowałem już chyba wszystkie możliwe mi kombinacje
  1. <?php
  2. unlink('x/x/plik.jpg');
  3. unlink('/x/x/plik.jpg);
  4. unlink('./x/x/plik.jpg);
  5. ?>

Żadne nie działa.

plik ze skryptem jest w site/admin.php
a plik który chcę usunac w site/x/x/plik.jpg

Ten post edytował Hannon 26.11.2007, 19:58:46
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Jaki jest komunikat błędu? Takie rzeczy trzeba podać. Czy masz uprawnienia do usunięcia tego pliku?

Pozdrawiam.
Go to the top of the page
+Quote Post
Hannon
post
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.02.2005

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


Warning: unlink(appz_info/tyu.txt) [function.unlink]: No such file or directory in /mat/admin.php on line 317

Linia 317 to właśnie ta z unlink.

I tak, uprawnienia są ustawione na 777 z desperacji (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
krzysiekk
post
Post #4





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


witam moze trzeba tak zrobic
  1. <?php
  2. unlink('/usr/local/apache/www/htdocs/nazwa serwisu/folder z plikiem do usuniecia/xx.jpg');
  3. ?>
Go to the top of the page
+Quote Post
Prym
post
Post #5





Grupa: Zarejestrowani
Postów: 100
Pomógł: 11
Dołączył: 20.05.2007
Skąd: z fotela :)

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


hmm a probowales podac mu w unlinku scizke z mat?

czyli unlink('mat/x/x/xxx.jpg');
Go to the top of the page
+Quote Post
Hannon
post
Post #6





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.02.2005

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


Oba sposoby nie działają... nawet facet z pomocy na home.pl nie moze mi odpowiedzieć co jest nie tak i czemu to nie działa (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Prym
post
Post #7





Grupa: Zarejestrowani
Postów: 100
Pomógł: 11
Dołączył: 20.05.2007
Skąd: z fotela :)

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


a to na homie?! tez mmam tam aktualnie problemy ze strona klienta - wlasnie sie dowiedzialem ze oni niemaja serwerow na apachu i polowa funkcji apachowych nie dziala (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

oczywiscie to ze w 1 poscie nie zamknales apostrofow to tylko tak tuta napisales (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

sproboj moze z cofnieciem sie o jeden poziom ? (moze cos ze struktura katalogowa im sie tez posypalo
unlink('../x/x/plik.jpg');
Go to the top of the page
+Quote Post
krzysiekk
post
Post #8





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


wez stworz w katalogu z pilkiem do usuniecia plik index.php a w nim wpisz
  1. <?php
  2. print_r($_SREVER);
  3. ?>

i zobaczysz w jakim katalogu jestes a potem to juz zrobisz unlink
Go to the top of the page
+Quote Post
Hannon
post
Post #9





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.02.2005

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


Krzysiekk - droga do pliku jest taka sama jaką unlinkowi podaje skrypt.
http://www.domain.pl/mat/prog/img/check.php <-

Prym - nadal nic (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Warning: unlink(../mat/prog/img/14.JPG ) [function.unlink]: No such file or directory in /mat/admin.php on line 316
Na ftp wyraźnie widze że ten plik tam jest.
Go to the top of the page
+Quote Post
itsme
post
Post #10





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




widocznie nie ma tam pliku lub tez php tego pliku nie widzi ...
Go to the top of the page
+Quote Post
Hannon
post
Post #11





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.02.2005

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


@itsme - nie obraź się ale odkrywcze to to nie było. ^^ z angielskiego tłumaczyć jeszcze umiem i troche mózgu mimo wszytko po latach mi zostało.
Pytam czy ktoś może nie wie jak to naprawić/ominąć/rozwiązać.

Najrozsądniejszym rozwiązaniem jest to że unlink dostaje złą ścieżkę, ale próbowałem multum opcji z slashami, bez, z kropkami, wielokropkami i innym padłem ale nie działa. Zatem - pomysły ?
Go to the top of the page
+Quote Post
itsme
post
Post #12





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




czasami najprostrze rowiązania sa w najprosztych odkryciach.
bez urazy ale nie potrafisz nawet prawidłowo podać ścieżkę ... żenuaaa :-)

print $sSciezka.$sPlik;

wynik wklei do klienta ftp i zobacz co CI sie pojawi

druga opcja przeklei ścieżkę z klienta ftp do skryptu php.
Go to the top of the page
+Quote Post
Hannon
post
Post #13





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.02.2005

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


Nie specjalnie wiem o co Ci chodzi z tym
print $sSciezka.$sPlik;
ale tamto drugie nie działa - tzn. przeklejenie ścieżki z klienta ftp.
Go to the top of the page
+Quote Post
krzysiekk
post
Post #14





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


witam moze posluchaj mnie chyba ze juz to zrobiles to wybacz
wyswietl sobie ta sciezke do tego katalogu przy uzyciu tego jak to wstawisz do katlogu w plikami do usunieci ato ci cos podobnego da
"/var/www/html/pro/xx/xx/xx/index.php" i to jest sciezka do pliku na serwerze
  1. <?php
  2. print_r($_SERVER);
  3. ?>

a dokladnie potrzebujesz
$_SERVER[SCRIPT_FILENAME]
Go to the top of the page
+Quote Post
Hannon
post
Post #15





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.02.2005

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


SCRIPT_URI http://www.domain.pl/mat/prog/img/phpinfo.php
DOCUMENT_ROOT /


Well. To jest to co mi pokazuje document root. "/"
Niespecjalnie mi to mówi cokolwiek.

Wesoło. W pliku w którym jest samo unlink wszystko działa pięknie !
Tylko w tym w którym teraz grzebie jest voodoo i nie chce zobaczyć pliku.

Ten post edytował Hannon 27.11.2007, 18:28:16
Go to the top of the page
+Quote Post
b_chmura
post
Post #16





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


w pliku z unlink wsatw:
  1. <?php
  2. echo getcwd() . "\n";
  3. ?>

i sprawdz w jakim katalogu sie znajdujesz, z taką wiedzą z pewnością będziesz potrafił ustalić swoją ścieżkę do pliku
Go to the top of the page
+Quote Post
Hannon
post
Post #17





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.02.2005

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


Ale to moim zdaniem nie jest kwestia scieżki dostępu do pliku.
Bo skoro przy takiej samej ścieżce, dwa pliki ze skryptem, jeden z jedną linią :
  1. <? unlink("prog/img/plik.jpg"); ?>

gdzie wszystko działa pięknie.
a w drugim z skryptem nieco dłuższym about 350linii
i taką samą komendą z tym samym parametrem jak w poprzednim pliku
i tu NIE DZIAŁA.

To to chyba nie jest kwestia ścieżki do pliku. Podkreślam że oba skrypty są w tym samym katalogu.
Z czego w jednym ta komenda działa, zaś w drugim nie.
Go to the top of the page
+Quote Post
b_chmura
post
Post #18





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


może w pozostałych liniach kodu zmieniacz katalog roboczy (chdir" title="Zobacz w manualu PHP" target="_manual)
Go to the top of the page
+Quote Post
Lion_87
post
Post #19





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


no skoro to nie problem polecenia to widocznie gdzieś w skrypcie problem tkwi
Go to the top of the page
+Quote Post
Hannon
post
Post #20





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.02.2005

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


Nie, nie używałem takiej komendy, a całego skryptu nie będę wrzucał bo to pomniejszy gigant, wrzuce tylko dany if bo w danym momencie tylko tą skrypt wykonuje.
  1. <?php
  2. if($_SESSION['admin_dost'] == TRUE && $_GET['tab'] = "usun" && isset($_GET['clear']))
  3.  {
  4.  if($_GET['clear'] == "1"){$nazwa_plikua = "lista_klienci.txt";}
  5.  if($_GET['clear'] == "2"){$nazwa_plikua = "lista_nomadsoft.txt";}
  6. if($_GET['clear'] == "3"){$nazwa_plikua = "lista_inst.txt";}
  7. if($_GET['clear'] == "4"){$nazwa_plikua = "lista_crew.txt";}
  8.  
  9. $nazwa_pliku1 = "appz_info/".$_POST['usun'].".txt";
  10. $uchwyt1 = fopen($nazwa_pliku1, "r");
  11. $srodek_appza = fread($uchwyt1, filesize($nazwa_pliku1));
  12. fclose($uchwyt1);
  13. list($noa ,$loa , $ooa ,$woa, $uoa) = explode(":<br>:", $srodek_appza);
  14. $uoa = trim($uoa);
  15.  $filz = basename($uoa);
  16.  $filx = basename($loa);
  17.  
  18.  unlink("prog/".$filz);
  19.  unlink("prog/img/".filx); /* felerna linia*/
  20.  unlink("appz_info/".$_POST['usun'].".txt");
  21.  echo $nazwa_plikua;
  22.  $handle = fopen($nazwa_plikua,"r+");
  23.  $inside = fread($handle,filesize($nazwa_plikua));  
  24.  $inside = explode("#|#",$inside);
  25.  $key = array_search($_POST['usun'],$inside);
  26.  unset($inside[$key]);
  27.  $srodek = implode("#|#",$inside);
  28.  echo "<br>".$srodek."<br>";
  29.  fwrite($nazwa_plikua,$srodek);
  30.  fclose($handle);
  31.  
  32.  echo"Plik został pomyślnie usunięty";
  33.  }
  34. ?>


Marginsem implode nie chce działać niewiem czemu. Może komuś wpadnie coś do głowy.

Ok... już wiem co było powodem chociaż nie specjalnie wiem czemu basename to zostawiło. Na końcu zmiennych $filz i $filx była spacja.
Wydawało mi się że basename(); powinno mi wyczyścić samą nazwę pliku z obu stron. trim(); załatwiło sprawę.

Dziękuję wszystkim za pomysły i chęć pomocy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Temat to zamknięcia.
Go to the top of the page
+Quote Post
elnino17
post
Post #21





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.10.2012

Ostrzeżenie: (10%)
X----


Witam, co jest nie tak w tym kodzie, że plik nie chce sięusunąć ?
  1. <?php
  2. $dir = dir('../app-disc/upload files');
  3. while ($file = $dir->read())
  4. if ($file != '.' && $file != '..')
  5. echo '<br/><table><tr><td class="file_list">' . $file . '</td>' .
  6. '<td class="file_list"><a href="../app-disc/upload files/' . $file . '">Pobierz</a></td>' .
  7. '<td class="file_list"><a href="'. unlink('$DOCUMENT_ROOT/../app-disc/upload files/'. $file) . '">Usuń</a><br /></td>'
  8. . '</tr></table>';
  9. $dir->close();
  10. ?>
Go to the top of the page
+Quote Post
Turson
post
Post #22





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


<a href="'. unlink('$DOCUMENT_ROOT/../app-disc/upload files/'. $file) . '">Usuń</a>
o matko
albo usuwasz od razu, albo tworzysz link do usunięcia i po wejściu na link usuwasz
Go to the top of the page
+Quote Post
elnino17
post
Post #23





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.10.2012

Ostrzeżenie: (10%)
X----


Zrobiłem tak i też nie działa,
  1. <a href="$DOCUMENT_ROOT/../app-disc/upload files/'.unlink($file).'">

Chce żeby wszystkie operacje, dodawania(działa), pobierania(działa) i usuwania(nie działa) pliku(.img), były wykonywane na jednym pliku php. To usuwanie zrobiłem analogicznie do dwóch poprzednich funkcjonalności i nie wiem co jest nie tak.

Ten post edytował elnino17 15.04.2014, 06:21:01
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #24





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Jak to co jest nie tak? Wszystko. Atrybut href nie może być funkcją PHP. Zastosowanie czegoś takiego jak Ty napisałeś powoduje odpalenie funkcji unlink za każdym razem, gdy kod jest wykonywany, nie w momencie kliknięcia w link. No i skoro mówisz że nie działa, to i tak masz coś nie tak z tą funkcją. Włącz wyświetlanie błędów.

Poza tym, w pojedyńczych ciapkach nie otrzymujesz wartości zmiennej, tylko tekst. Musisz poprawić:

  1. unlink($DOCUMENT_ROOT . '/../app-disc/upload files/'. $file)


Ten post edytował b4rt3kk 15.04.2014, 08:54:20
Go to the top of the page
+Quote Post
elnino17
post
Post #25





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.10.2012

Ostrzeżenie: (10%)
X----


Zrobiłem to inaczej, zmienna się prawidłowo przesyła(prawidłowa nazwa i rozszrzenie) ale nie usuwa pliku do niej przypisanego.

  1. <?php
  2. ...
  3. .'<form action="delete_file.php" method="post">'
  4. . '<input type="hidden" name="file" value="' . $file . '">'
  5. . '<input type="submit" value="usuń">'
  6. . '</form>'
  7. ...
  8. ?>


  1. <?php
  2. $file = $_POST['file'];
  3. unlink($file);
  4. if (!$file) {
  5. echo 'zmienna ' . $file . ' została usunięta';
  6. } else {
  7. echo 'zmianna ' . $file . ' nie została usunięta';
  8. }
  9. ?>


Ten post edytował elnino17 15.04.2014, 17:42:17
Go to the top of the page
+Quote Post
Turson
post
Post #26





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


wcześniej podawałeś ścieżkę $DOCUMENT_ROOT/../app-disc/upload files/ a tu jej nie ma
Go to the top of the page
+Quote Post
elnino17
post
Post #27





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.10.2012

Ostrzeżenie: (10%)
X----


Poprawiłem lecz dalej nie usuwa

delete_file.php
  1. <?php
  2. $file = $_POST['file'];
  3. unlink($DOCUMENT_ROOT.'/../app-disc/upload files/'.$file);
  4. if(!$file){
  5. echo 'zmienna '.$file.' została usunięta';
  6. }else{
  7. echo 'zmianna '.$file.' nie została usunięta';
  8. }
  9. ?>


Podnosze (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Turson
post
Post #28





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Źle sprawdzasz czy usunięto. Sprawdzaj unlink a nie $file, który jest zmienną (IMG:style_emoticons/default/facepalmxd.gif)
  1. $file = $_POST['file'];
  2. if(unlink($DOCUMENT_ROOT.'/../app-disc/upload files/'.$file)){
  3. echo 'zmienna '.$file.' została usunięta';
  4. }else{
  5. echo 'zmianna '.$file.' nie została usunięta';
  6. }
Go to the top of the page
+Quote Post
b_chmura
post
Post #29





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


  1.  
  2. // Ścieżka do katalogu z plikami
  3. $dir = "{$DOCUMENT_ROOT}/../app-disc/upload files/";
  4.  
  5. // Nazwa pliku pobrana z POST. Koniecznie przefiltruj odbierane dane.
  6. $fileName = $_POST['file'];
  7.  
  8. // Sprawdzasz czy plik istnieje.
  9. if (file_exists($dir . $fileName)) {
  10. // Jeśli tak:
  11. // Usuwasz plik i sprawdzasz czy wszystko w porządku.
  12.  
  13. if (unlink($dir . $fileName)) {
  14. //Jeśli tak:
  15.  
  16. echo "Plik '{$fileName}' został usunięty";
  17. } else {
  18. //Jeśli nie:
  19.  
  20. echo "Wystąpił błąd podczas usuwania pliku '{$fileName}'!";
  21. }
  22.  
  23. } else {
  24. // Jeśli plik nie istnieje na serwerze
  25.  
  26. echo "Plik '{$fileName}' nie istnieje!";
  27. }
Go to the top of the page
+Quote Post
elnino17
post
Post #30





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.10.2012

Ostrzeżenie: (10%)
X----


Dzięki za pomoc ale sam rozwiązałem problem (IMG:style_emoticons/default/smile.gif)
  1. $file = '../app-disc/upload files/'.filter_input(INPUT_POST, 'file');
  2. unlink($file);
  3. ...

Go to the top of the page
+Quote Post
nospor
post
Post #31





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Pozbycie sie IFa, ktory generowal info o poprawnym lub niepoprawnym skasowaniu, ciezko nazwac rozwiązaniem problemu.... No, ale każdy ma inne gusta.
Go to the top of the page
+Quote Post
elnino17
post
Post #32





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.10.2012

Ostrzeżenie: (10%)
X----


Nie chodzi o if'a, chodzi o ten:
  1. .filter_input(INPUT_POST, 'file')

kawałek kodu, bez niego nie odnajdywało pliku a co za tym idzie nie mogło go usunąć, z if'ami jest wszystko ok i wszystko działa poprawnie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #33





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




No jesli zostawiles IFy jak na poczatku:
if (!$file) {

echo 'zmienna ' . $file . ' została usunięta';

} else {

echo 'zmianna ' . $file . ' nie została usunięta';

}

To nie, z IFami nie jest wszystko wporządku (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
elnino17
post
Post #34





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.10.2012

Ostrzeżenie: (10%)
X----


Mam nadzieje, że teraz wszystkich zadowoliłem (IMG:style_emoticons/default/wink.gif)
  1. $file = '../app-disc/upload files/'.filter_input(INPUT_POST, 'file');
  2. $delfile = unlink($file);
  3. if($delfile){
  4. echo 'Plik '.$file.' został usunięty';
  5. }else{
  6. echo 'Plik '.$file.' nie został usunięty';
  7. }
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 21.12.2025 - 08:48