predator
web designer
bug zip related
вот этот баг попрежнему открыт
http://bugs.php.net/bug.php?id=49072
если заливать через ZipArchive битый архив то $zip->open( $_str, ZIPARCHIVE::CHECKCONS )
возвращает true (должно поидее ZIPARCHIVE::ER_CRC либо false)
как только что-то делаешь (напрмер extractTo) скрипт вешает пхп
не понял как зарегится на bugs.php.net
вообще странный сайт какой-то
может кто предложит как в пхп определить битый файл или нет?
или есть какая-то функция корректно обрабатывающая такие файлы, чтобы можно было до ZipArchive проверить файл?
зы
проверял это всё на
5.2.11, 5.2.12 / windows xp sp3 / apache 2.2
5.2.9 / centos linux / apache 2.0
-~{}~ 10.02.10 14:59:
пока сделал так
но это конечно костыли
вот этот баг попрежнему открыт
http://bugs.php.net/bug.php?id=49072
если заливать через ZipArchive битый архив то $zip->open( $_str, ZIPARCHIVE::CHECKCONS )
возвращает true (должно поидее ZIPARCHIVE::ER_CRC либо false)
как только что-то делаешь (напрмер extractTo) скрипт вешает пхп
не понял как зарегится на bugs.php.net
вообще странный сайт какой-то
может кто предложит как в пхп определить битый файл или нет?
или есть какая-то функция корректно обрабатывающая такие файлы, чтобы можно было до ZipArchive проверить файл?
зы
проверял это всё на
5.2.11, 5.2.12 / windows xp sp3 / apache 2.2
5.2.9 / centos linux / apache 2.0
-~{}~ 10.02.10 14:59:
пока сделал так
PHP:
class FixedZipArchive extends ZipArchive {
/**
* opens a stream to a ZIP archive file. calls the ZipArchive::open() internally.
* overwrites ZipArchive:: open() to add fix 49072 bug
* (see [url]http://bugs.php.net/bug.php?id=49072[/url] (5.2.12 still exists))
*
* @param string $_str
* @param int $flags
* return mixed
*/
public function open( $_str='', $flags ) {
if ( empty( $_str ) ) {
return false; // нет имени файла
}
if ( empty( $flags ) ) {
$_strOut=shell_exec( 'unzip -t '.$_str );
$_arrTest=explode( 'No errors detected in compressed data', $_strOut );
if ( count( $_arrTest )==1 ) {
return ZIPARCHIVE::ER_CRC; // corrupted zip file
}
}
return parent::open( $_str, $flags );
}
}