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
Author: mwitkowski2b
Date: Mon, 18 May 2015 11:30
Date: Mon, 18 May 2015 11:30
31 lines
2028 bytes
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
Author: adam
Date: Mon, 18 May 2015 11:39
Date: Mon, 18 May 2015 11:39
14 lines
1435 bytes
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
Author: Borys Pogoreło
Date: Mon, 18 May 2015 13:13
Date: Mon, 18 May 2015 13:13
18 lines
1252 bytes
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
Author: mwitkowski2b
Date: Mon, 18 May 2015 13:25
Date: Mon, 18 May 2015 13:25
15 lines
1790 bytes
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
Author: adam
Date: Mon, 18 May 2015 13:45
Date: Mon, 18 May 2015 13:45
9 lines
1551 bytes
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
Author: ww
Date: Mon, 18 May 2015 13:51
Date: Mon, 18 May 2015 13:51
18 lines
1925 bytes
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
Author: adam
Date: Mon, 18 May 2015 13:59
Date: Mon, 18 May 2015 13:59
8 lines
1336 bytes
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
Author: Borys Pogoreło
Date: Mon, 18 May 2015 14:59
Date: Mon, 18 May 2015 14:59
10 lines
1199 bytes
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
Author: ww
Date: Tue, 19 May 2015 06:14
Date: Tue, 19 May 2015 06:14
9 lines
1595 bytes
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
Author: ww
Date: Tue, 19 May 2015 06:17
Date: Tue, 19 May 2015 06:17
12 lines
1786 bytes
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
Author: mwitkowski2b
Date: Tue, 19 May 2015 11:11
Date: Tue, 19 May 2015 11:11
4 lines
1747 bytes
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
Author: Borys Pogoreło
Date: Tue, 19 May 2015 20:04
Date: Tue, 19 May 2015 20:04
16 lines
1401 bytes
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
Author: ww
Date: Tue, 19 May 2015 21:01
Date: Tue, 19 May 2015 21:01
12 lines
1672 bytes
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
Author: mwitkowski2b
Date: Wed, 20 May 2015 08:50
Date: Wed, 20 May 2015 08:50
5 lines
1469 bytes
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
Author: Borys Pogoreło
Date: Wed, 20 May 2015 16:10
Date: Wed, 20 May 2015 16:10
14 lines
1459 bytes
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