Portál AbcLinuxu, 26. dubna 2024 21:37


Dotaz: stazeni velkeho souboru (2GB) po autorizaci PHP pres Apache

13.2.2013 10:38 xts | skóre: 10
stazeni velkeho souboru (2GB) po autorizaci PHP pres Apache
Přečteno: 365×
Odpovědět | Admin
Zdravim,

mam nasledujici problem: na hostingu potrebuju nechat uzivatele stahnout soubor vetsi nez 2GB - cca 2.5GB, ale po autorizaci pres php. Vzhledem k 32-bit prostredi nejdou pouzit funkce fopen,filesize,readfile apod - pise to "failed to open stream: Value too large for defined data type".

Je zapnuty safe_mod, zkousel jsem i variantu exec('cat file.zip') ale zkonci to s chybou 127.

Koukal jsem na mod_xsendfile ktery se mi hodne libi, zatim zjistuju jestli ho na hostingu budou umet nahodit.

Nicmene - je ted nejaky inteligentni zpusob jak soubor dat ke stazeni po autorizaci v php skriptu, tedy pres php - idealne to pak nejak prehodit na apache, protoze php na tohle moc dobry reseni neni, zejmena u velkyho souboru. Soubory jsou ve slozce /files, kam je pres .htaccess zakazany pristup, takze primo linkovat to nejde a ani nema jit.

diky za napady

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.2.2013 11:46 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: stazeni velkeho souboru (2GB) po autorizaci PHP pres Apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
U Apache 2.2 píšou:
Large File Support
httpd is now built with support for files larger than 2GB on modern 32-bit Unix systems. Support for handling >2GB request bodies has also been added.

Takže by to s verzí 2.2 mělo být OK (jinak smůla), u 32bit PHP bez kompilačních flagů jen 2GiB.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
13.2.2013 12:14 xts | skóre: 10
Rozbalit Rozbalit vše Re: stazeni velkeho souboru (2GB) po autorizaci PHP pres Apache
je to zkompilovany bez flagu, tedy limit pro fopen, filesize atd je 2GB (2^31).

Mam silny pochybnosti o vhodnosti pouziti php k stahovani takhle velkych souboru, rad bych to po autorizaci nejak prehodil na apache (neco jako dela ten mod_xsendfile) nebo neco podobneho aby celou dobu stahovani nemusel bezet skript.
Řešení 1× (xts (tazatel))
Jendа avatar 13.2.2013 13:08 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: stazeni velkeho souboru (2GB) po autorizaci PHP pres Apache
Nasymlinkuj ho někam pod náhodným názvem a pošli uživateli URL ;)
Řešení 1× (xts (tazatel))
13.2.2013 14:22 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: stazeni velkeho souboru (2GB) po autorizaci PHP pres Apache
A to někam, si udělej konkrétní adresář, kde pro něj umožníš „následovat linky“, a pak si hlídej, aby jsi si tam nenalinkoval něco jiného :-).
Nebo se na linky vykašlat a udělat 'mv' do tohoto adresáře (s tím náhodným názvem).
Podmínkou je stále Apache 2.2+.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
14.2.2013 16:04 xts | skóre: 10
Rozbalit Rozbalit vše Re: stazeni velkeho souboru (2GB) po autorizaci PHP pres Apache
to je ono (to ci pises ty a Sangala), shodou okolnosti mi to samy poradil i nekdo na jakpsatweb. Nakonec mam dva adresare, jeden je nepristupnej a se souborama, do druhyho to vytvari symlinky s pridanym generovanym nahodnym hashem kterej se pri stazeni orizne. Byl to trochu boj (asi tak puldenni) ale nakonec to funguje. diky panove
rADOn avatar 13.2.2013 18:06 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: stazeni velkeho souboru (2GB) po autorizaci PHP pres Apache
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ani pres readfile() to neproleze?
"2^24 comments ought to be enough for anyone" -- CmdrTaco
14.2.2013 15:59 xts | skóre: 10
Rozbalit Rozbalit vše Re: stazeni velkeho souboru (2GB) po autorizaci PHP pres Apache
to je vsechno stejny
[function.readfile]: failed to open stream: File too large
32-bit system a tedy 32-bit integer kterej to vraci

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.