🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.php
15 messages
15 total messages Started by mwitkowski2b Mon, 18 May 2015 11:30
Problem z usunięciem pliku po operacji download
#230967
Author: mwitkowski2b
Date: Mon, 18 May 2015 11:30
31 lines
2028 bytes
Witam

Mam taka sytuację:
Umożliwiam użytkownikowi ściąganie pliku. Plik który jest w formacie CSV, jest tworzony na dysku serwera, po czym na koniec tej operacji chcę usunąć ściągnięty przez użytkownika plik. Fragment funkcji, która realizuje to zadanie jest następujący:

ignore_user_abort(true);
set_time_limit(0); 
header('Content-Description: File Transfer');
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));

// sciagnij plik		
if(readfile($file))
{
   // (1)
   if($usuwac_plik == '1')
   {
      // usuń plik
      unlink($file);		
   }
}

Problem polega na tym, że plik nie jest usuwany. Aplikacja pracuje pod IIS 6.


Pozdrawiam
MW
Re: Problem z usunięciem pliku po operacji download
#230978
Author: adam
Date: Mon, 18 May 2015 11:39
14 lines
1435 bytes
Czesc.

On 2015-05-18, mwitkowski2b@gmail.com <mwitkowski2b@gmail.com> wrote:
> Problem polega na tym, że plik nie jest usuwany.
Wyglada mi to na problem braku praw zapisu do tego pliku dla uzytkownika spod 
ktorego dziala proces IIS. Mozna to sprawdzic funkcja is_writable
http://php.net/manual/en/function.is-writable.php

Proponowalbym tez wlaczenie raportowania o bledach:
ini_set('display_errors', '1');
http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors

Pozdrawiam,
A.
Re: Problem z usunięciem pliku po operacji download
#230979
Author: Borys Pogoreło
Date: Mon, 18 May 2015 13:13
18 lines
1252 bytes
Dnia Mon, 18 May 2015 04:30:17 -0700 (PDT), mwitkowski2b@gmail.com
napisał(a):

>    if($usuwac_plik == '1')
>    {
>       // usuń plik
>       unlink($file);		
>    }
> }
> 
> Problem polega na tym, że plik nie jest usuwany. Aplikacja pracuje pod IIS 6.

Wartość zmiennej $usuwac_plik skąd się bierze? I czy na pewno masz w niej
'1'?

-- 
Borys Pogoreło
borys(#)leszno,edu,pl
Re: Problem z usunięciem pliku po operacji download
#230968
Author: mwitkowski2b
Date: Mon, 18 May 2015 13:25
15 lines
1790 bytes
"is_writable" zwróciło true.
Parametr $usuwac_plik ma wartość '1', więc tutaj tez nie ma błędu.
(Operacje tworzenia pliku i ściągnięcia go przebiegają prawidłowo).

Ale np. jak wpiszę jakiś kod sprawdzający w miejsce (1), czyli zaraz za readfile|(),
np:

echo "Mam usunąć plik" . $file . "<br>";
exit;

to na ekranie nic nie widzę - tak jakby ten kod nie był wykonywany.


Pozdrawiam
MW
Re: Problem z usunięciem pliku po operacji download
#230969
Author: adam
Date: Mon, 18 May 2015 13:45
9 lines
1551 bytes
On 2015-05-18, mwitkowski2b@gmail.com <mwitkowski2b@gmail.com> wrote:
> to na ekranie nic nie widzę - tak jakby ten kod nie był wykonywany.
Wiec pewnie nie jest. :) Proponuje wlaczyc raportowanie o bledach w 
konfiguracji PHP w pliku php.ini - czy gdziekolwiek tam ona u ciebie siedzi.
Interpreter powinien wypluc jakis sensowny komunikat informujacy o tym 
dlaczego nie chcial wykonac calego kodu.

Pozdrawiam,
A.
Re: Problem z usunięciem pliku po operacji download
#230970
Author: ww
Date: Mon, 18 May 2015 13:51
18 lines
1925 bytes
W dniu 2015-05-18 o 15:25, mwitkowski2b@gmail.com pisze:
> "is_writable" zwróciło true.
> Parametr $usuwac_plik ma wartość '1', więc tutaj tez nie ma błędu.
> (Operacje tworzenia pliku i ściągnięcia go przebiegają prawidłowo).
>
> Ale np. jak wpiszę jakiś kod sprawdzający w miejsce (1), czyli zaraz za readfile|(),
> np:
>
> echo "Mam usunąć plik" . $file . "<br>";
> exit;
>
> to na ekranie nic nie widzę - tak jakby ten kod nie był wykonywany.

Ale plik wtedy jakiś dostajesz ? Jeśli tak to w nim szukaj tego tekstu a
nie na ekranie.

Zrob sobie to ini_set('display_errors', 1), wywal tymczasowo te headery, 
wrzuć jak najmniejszy plik żeby coś widzieć.
Re: Problem z usunięciem pliku po operacji download
#230971
Author: adam
Date: Mon, 18 May 2015 13:59
8 lines
1336 bytes
On 2015-05-18, ww <ww@o2.pl> wrote:
> Zrob sobie to ini_set('display_errors', 1), [...]
Z tego co sie orientuje, jezeli interpreter zwraca blad krytyczny to powyzsza 
deklaracja nie zostanie wykonana.

Pewniejszym bedzie ustawienie tego w pliku konfiguracyjnym.

A.
Re: Problem z usunięciem pliku po operacji download
#230973
Author: Borys Pogoreło
Date: Mon, 18 May 2015 14:59
10 lines
1199 bytes
Dnia Mon, 18 May 2015 15:51:22 +0200, ww napisał(a):

> Zrob sobie to ini_set('display_errors', 1), wywal tymczasowo te headery, 
> wrzuć jak najmniejszy plik żeby coś widzieć.

ini_set('display_errors', -1)

-- 
Borys Pogoreło
borys(#)leszno,edu,pl
Re: Problem z usunięciem pliku po operacji download
#230974
Author: ww
Date: Tue, 19 May 2015 06:14
9 lines
1595 bytes
W dniu 2015-05-18 o 16:59, Borys Pogoreło pisze:
> Dnia Mon, 18 May 2015 15:51:22 +0200, ww napisał(a):
>
>> Zrob sobie to ini_set('display_errors', 1), wywal tymczasowo te headery,
>> wrzuć jak najmniejszy plik żeby coś widzieć.
>
> ini_set('display_errors', -1)

i co takie -1 niby robi ?
Re: Problem z usunięciem pliku po operacji download
#230972
Author: ww
Date: Tue, 19 May 2015 06:17
12 lines
1786 bytes
W dniu 2015-05-18 o 15:59, adam pisze:
> On 2015-05-18, ww <ww@o2.pl> wrote:
>> Zrob sobie to ini_set('display_errors', 1), [...]
> Z tego co sie orientuje, jezeli interpreter zwraca blad krytyczny to powyzsza
> deklaracja nie zostanie wykonana.

Usunięcie błędów krytycznych z tego kodu to raczej nie powinien być 
problem. A jak są błędy to można tej zajrzeć do logów serwera www.

> Pewniejszym bedzie ustawienie tego w pliku konfiguracyjnym.

Jeśli to środowisko deweloperskie to może tak.
Re: Problem z usunięciem pliku po operacji download
#230980
Author: mwitkowski2b
Date: Tue, 19 May 2015 11:11
4 lines
1747 bytes
Dziękuję za wszystkie rady, pomogło ustawienie ini_set('display_errors', 1),
dzięki czemu wiem, ze to jest kwestia uprawnień. Generalnie wszystko działa do miejsca: unlink($file). Na tej instrukcji dostaję komunikat:
Permission denied in C:\Nazwa_pliku on line 68
Tylko, że ten sam skrypt tworzy plik, który go próbuje potem usunąć.
Re: Problem z usunięciem pliku po operacji download
#230975
Author: Borys Pogoreło
Date: Tue, 19 May 2015 20:04
16 lines
1401 bytes
Dnia Tue, 19 May 2015 08:14:56 +0200, ww napisał(a):

>>> Zrob sobie to ini_set('display_errors', 1), wywal tymczasowo te headery,
>>> wrzuć jak najmniejszy plik żeby coś widzieć.
>>
>> ini_set('display_errors', -1)
> 
> i co takie -1 niby robi ?

Tworzy maskę bitową ze wszystkich możliwych flag E_*

1 to wyłącznie E_ERROR

-- 
Borys Pogoreło
borys(#)leszno,edu,pl
Re: Problem z usunięciem pliku po operacji download
#230976
Author: ww
Date: Tue, 19 May 2015 21:01
12 lines
1672 bytes
On 2015-05-19 22:04, Borys Pogoreło wrote:
> Dnia Tue, 19 May 2015 08:14:56 +0200, ww napisał(a):
>
>>>> Zrob sobie to ini_set('display_errors', 1), wywal tymczasowo te headery,
>>>> wrzuć jak najmniejszy plik żeby coś widzieć.
>>> ini_set('display_errors', -1)
>> i co takie -1 niby robi ?
> Tworzy maskę bitową ze wszystkich możliwych flag E_*
>
> 1 to wyłącznie E_ERROR
>
Chyba ci się coś pomyliło z error_reporting.
Re: Problem z usunięciem pliku po operacji download
#230981
Author: mwitkowski2b
Date: Wed, 20 May 2015 08:50
5 lines
1469 bytes
Bardzo dziękuje wszystkim za pomoc. Okazało się, że katalog w którym powstawały pliki nie miał uprawnień do usuwania plików (Pod IIS6, trzeba było dodać prawo Modify).


Pozdrawiam
MW
Re: Problem z usunięciem pliku po operacji download
#230977
Author: Borys Pogoreło
Date: Wed, 20 May 2015 16:10
14 lines
1459 bytes
Dnia Tue, 19 May 2015 23:01:34 +0200, ww napisał(a):

>> Tworzy maskę bitową ze wszystkich możliwych flag E_*
>>
>> 1 to wyłącznie E_ERROR
>>
> Chyba ci się coś pomyliło z error_reporting.

Oczywiście masz rację :) Nawet nie podejrzewałem, że można taki problem
rozpracowywać bez podglądu błędów.

-- 
Borys Pogoreło
borys(#)leszno,edu,pl
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads