У меня проблема с классом ZipArchive php_zip.dll. Я использую его через класс-оболочку ZipArchiveImproved, предложенный на php.net, чтобы избежать проблемы с максимальным дескриптором файла.
Проблема действительно проста: 700 файлов добавляются правильно (файлы изображений jpg), а остальные не работают. Метод addFile возвращает false.
Версия PHP - 5.2.6.
Странно то, что раньше это действительно работало.
В чем может быть проблема? Можете ли вы дать мне какие-нибудь подсказки?
Заранее большое спасибо!
Изменить: извините, это неправда, что я не получаю сообщения об ошибке (display_errors был отключен в php.ini, я этого раньше не замечал). Начиная с файла 701. я получаю следующее сообщение об ошибке:
Warning: ZipArchive::addFile() [ziparchive.addfile]: Invalid or unitialized Zip object in /.../includes/ZipArchiveImproved.class.php on line 104
Похоже, что вызов close () возвращает false, но не вызывает ошибки. Любые идеи?
Изменить 2: соответствующий источник:
include_once DIR_INCLUDES . 'ZipArchiveImproved.class.php';
ini_set('max_execution_time', 0);
$filePath = $_SESSION['fqm_archivePath'];
$zip = new ZipArchiveImproved();
if(! $zip->open($filePath, ZipArchive::CREATE))
{
echo '<div class="error">Hiba: a célfájl a(z) "' . $filePath . '" útvonalon nem hozható létre.</div>';
return;
}
echo('Starting (' . count($_POST['files']) . ' files)...<br>');
$addedDirs = array();
foreach($_POST['files'] as $i => $f)
{
$d = getUserNameByPicPath($f);
if(! isset($addedDirs[$d]))
{
$addedDirs[$d] = true;
$zip->addEmptyDir($d);
echo('Added dir "' . $d . '".<br>');
}
$addName = $d . '/' . basename($f);
$r = $zip->addFile($f, $addName);
if(! $r)
{
echo('<font color="Red">[' . ($i + 1) . '] Failed to add file "' . $f . '" as "' . $addName . '".</font><br>');
}
}
$a = $zip->addFromString('test.txt', 'Moooo');
if($a)
{
echo 'Added string successfully.<br>';
}
else
{
echo 'Failed to add string.<br>';
}
$zip->close();
error_reporting
? Есть ли у класса запись ошибок? - person Pekka   schedule 09.08.2010