Diskuze: ZipArchive close No Error - zahadna chyba pri zavirani zipu
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Vcera jsem nemel moc cas to popsat. A jeste k tomu patri export funkce, ktera je take stejna. A ten radek vypise prikaz $zip->close();.
public function exportDb($filename_prefix="hraward_zaloha")
{
$time = date('Y-m-d-H-i-s', time());
// $zipname = './tmp/archive_'.$time.'.zip';
$zipname = '.'.$filename_prefix.'_'.$time.'.zip'; // tady byla na zacatku '.' + name, nevim proc
$cfg_str = file_get_contents('./inc/cfg_inc.php');
$cfg_str = preg_replace('~\=\> \'[^\']+\'~', '=> \'\'', $cfg_str);
$db_str = $this->SQL->exportDb();
//var_dump($db_str);
$addfiles = array(
'inc/cfg_inc.php' => $cfg_str, // vymaz cfg
'sql/mysql_dump.sql' => $db_str
);
// echo '<pre>'.$db_str;
ExtendedZip::zipTree('.', $zipname, ZipArchive::CREATE, '', $addfiles);
// ExtendedZip::zipTree('./css', $zipname, ZipArchive::CREATE, '', $addfiles);
//$mime = "application/x-gzip";
//header( "Content-Type: " . $mime );
//header( 'Content-Disposition: attachment; filename="' . $filename . '"' );
exit();
}
Jde o to, ze stejny kod mam ve 2 php programech, ktere jsou hodne podobne,
ale jine.
Oba spoustim localhost, stejna db, jine tabulky, jine adresare souboru. Jiny kod
ostatniho programu.
Script provadi export db, expor souboru, zipuje to, posila uzivateli.
Jeden program vrati zip 11MB, druhu zip 0B.
Vubec mi to nedava smysl.
Zatim mne napadaji tyto mozne priciny, ale netusim, jak by bylo mozne, ze to ma vliv:
Zkusil jsem si vypsat prave tu chybu ziu a ten vrati totec, co je v te php
hlasce
"Read error: No error"
Zkusil jsem var_dump($zip) a ten vypise, ze tam je 287 souboru, ze je to ulozeno v c:\neco\temp\soubor.tmp. Ale, kdyz po zip->close zkusim ziskat filesize, tak mi napise 0.
Nenarazil jste nekdo pri php-zipovani na takovou chybu? Dost spatne se to
googluje.
"Read error: No error" a pritom php vyhodi warning, takze nejaky error asi
nastane. A nejde precist soubor z pameti, takze zip si soubor stale blokuje
protoze neni uzavreny.
Fakt netusim, co mam hledat, proc selhalo zavreni zipu, ikdy evidentne tam soubory ma. Jak ty z disku, tak z databaze.
Tohle je vypis.
echo '<br>numFiles = '. $zip->numFiles.'<br>';
echo '<hr>'; var_dump($zip->getStatusString()); echo '<hr>';
$success = $zip->close();
echo '<hr>'; var_dump($zip->getStatusString()); echo '<hr>';
var_dump(file_get_contents($filename));
numFiles = 292
string(8) "No error"
Warning: ZipArchive::close(): Read error: No error in C:\xampp\htdocs\www\ev2c_hraward\inc\class_app_evid2c.php on line 2041
Warning: ZipArchive::getStatusString(): Invalid or uninitialized Zip object in C:\xampp\htdocs\www\ev2c_hraward\inc\class_app_evid2c.php on line 2042
bool(false)
string(0) ""
Cili, evidentne se to uzavre, ale z nejakeho duvodu vrati zip pradny
vysledek, asi selze close.
Spis je zvlastni, ze na tom samem pc ten samy kod, v jinem php programu a bez
problemu
Na localhostu mam
System Windows NT DESKTOP-J96VK8S 10.0 build 19041 (Windows 10) i586
Build Date May 23 2018 20:26:19
Compiler MSVC15 (Visual C++ 2017)
Architecture x86
Server API Apache 2.0 Handler
PHP API 20170718
PHP Extension 20170718
Zend Extension 320170718
Zend Extension Build API320170718,TS,VC15
PHP Extension Build API20170718,TS,VC15
Apache Version Apache/2.4.33 (Win32) OpenSSL/1.1.0h PHP/7.2.6
Apache API Version 20120211
Tak jsem zkousel tam pridat omezeni na pocet souboru. Pulil jsem interval a
dosel k cislu 130. Tam je nejaky jpeg, co ma neco spatne. Ten jsem prepsal.
Hloupy, nezazalohoval ten vadny Ale i tak ten novy je vytvoreny v adobe ilustrator a ma divne
systemove datum. jedno z tech ctyr. ostatni jsou spravne. Bud bylo prazdne nebo
tam je 31.12.1979 (nebo 30 nebo, kolik ma ten mesic dnu). Divne, ze by na tom
php-zip zhavaroval, ale po nahrazeni mi to proslo
Zobrazeno 4 zpráv z 4.