ahoj.. dlouho jsem tu neřešil žádnej problém a cca po roce jsem se vrátil abych otravoval.
mám skript, jehož účelem je uploadnout zip archív ve kterém jsou fotky a komentáře, rozbalit ho, zpracovat ho a zařadit do galerie. Samozřejmě že doma mi funguje v pohodě /ano, mám jinou verzi php/, ale na wztku ne-e.
Zde je problémová část:
$size=zip_entry_filesize($zip_entry);
fwrite($fp, zip_entry_read($zip_entry, $size));
fclose($fp);
zip_entry_close($zip_entry);
jsem si jist, že $zip_entry je "a directory entry returned by zip_read()" /jak se píše v manuálu/ a že $size je nějaká velikost souboru. Přesto mi funkce zip_entry_read() nevrátí nic.
Problém jsem nenašel. Napadlo mě snad jenom jestli není problém v kompresi nebo programu použitém k balení.. (pokud si dobře pamatuju, testovací archív byl zabalen ve WinRaru 3.70)
tak co.. pomůžete mi?
hm, nikdy jsem toto na wz nezkousel ... jenom si tak nejsem jisty jestli je na wz zipovaci knihovna ... ale jestli ctu dobre tak v phpinfo je ...
zip_entry_filesize() ti funguje bez problemu? jestli jo tak je problem nvm kde :)
v phpinfo je podpora zip nactena.. zip_entry_filesize() mi vraci spravnou hodnotu velikosti souboru .. taky netusim ;)
"Přesto mi funkce zip_entry_read() nevrátí nic."
Není možná, pokud je opravdu tahle featura podporována, tak něco vracet musí ať chceš nebo nee.
error_reporting(E_ALL) -> Memory_limit , set-time-limit , etc ...
mno.. nápad dobrej.. na začátek souboru sem teda vrazil
error_reporting(E_ALL);
a kromě toho že sem zapomněl jedny uvozovky v jedněch hranatejch závorkách jsem se nic nového nedověděl. Funkce tedy nevrací chybu. Takže si asi myslí že to co dělá dělá dobře, ale nedělá to dobře.
set_time_limit() na wz použít nelze, funkce je zakázaná. pochybuju že bude problém s pamětí při rozbalování souboru pod 1MB
nevrací nic co by bylo vidět.
Tak navhuji udelat jedno ... tu cast ktera dela divne veci proste zakomentuj (nemaz) a vedle si udelej treba jenom echo zip_entry_read(...); a zkus co ti to vyplivne ... pripadne to zkus bez parametru $size ....
jenom me tak napada... zip_entry_filesize() vraci aktualni velikost slozky (souboru) , ale zip_entry_read() ma 2. parametr size jako velikost uncompresed .... to by mohlo delat ty problemy ....
A zkousel jsi i ten priklad uvedeny v diskuzi? http://cz.php.net/manual/cs/function.zip-entry-read.php
Jinak hadam bokem, ale neni k tomuto ucelu potreba PECL, ktere na WZ neni?
Freeze:
to sem taky provadel. zip_entry_read() nic nevyplivlo v zadnem pripade.
Tomik:
zkusil jsem na wztku, zkusil jsem doma..
ale jak si hadal bokem tak sem se bokem kouknul a prej to chce knihovnu ZZIPlib, kterou sem v phpinfu nenasel.
takze jediny co mi asi zbejva je zavolat "haloo, prosim zprovoznite podporu zip?", zejo..
Nevim teda jak s tim PECLem, ale uplne stejne 'pozadavky' jako zip_entry_read() - ktera nedela zrejme nic - mai funkce zip_entry_filesize() - ktera zrejme funguje bez problemu ...
(proto jsem se predtim ptal jeslti zip_entry_filesize funguje :) )
oukej.. takže je chyba ve webzdarmí PHP zip extension?