PHP extractTo неправильно распаковывает файлы на одном компьютере, но работает на другом.
Я столкнулся с очень странной проблемой! Я использую метод ниже, чтобы извлечь содержимое файла.zip в новую папку. Он отлично работает на одном моем компьютере, но не работает на другом! У меня Windows XP на обоих компьютерах, и на обоих я установил один и тот же wampServer. Все между двумя компьютерами одинаково, за исключением их ЦП и ОЗУ! Мой компьютер очень мощный, а тот, на котором происходит сбой процесса извлечения, - очень медленный компьютер. Это почему? Как я могу убедиться, что код PHP работает отлично даже в медленной среде?
Одна вещь, которую нужно добавить: zip-архив, который нужно извлечь, содержит один каталог и несколько файлов в этом каталоге. Если я тестирую процесс с zip-файлом, в котором нет каталогов, он отлично работает на обоих компьютерах. Есть идеи?!
public function extract($pluginName, $pasteLocation) {
$zip = new ZipArchive();
$plugin = $pasteLocation.$pluginName.".zip";
if ($zip->open($plugin) === TRUE) {
$zip->extractTo($pasteLocation);
$zip->close();
unlink($pasteLocation.$pluginName.'.zip');
$status = "true";
$msg = "success";
} else {
$status = "false";
$msg = "error";
}
$result["status"] = $status;
$result["msg"] = $msg;
return $result;
}
1 ответ
Вы сказали, что это не работает в одной системе. Можете ли вы сказать, что не работает, например, файлы извлекаются частично? или файлы повреждены?
Вы пробовали использовать разные каталоги. Содержит ли целевой каталог файл с тем же именем, что и каталог в zip-файле? тогда я думаю, что создание каталога не будет работать.
И какую версию php вы используете?
РЕДАКТИРОВАТЬ: Вы использовали функцию ZipArchive::getStatusString, чтобы получить какие-либо сгенерированные ошибки? Вы используете один и тот же исходный архив на обеих машинах?
Вы также можете попробовать процедуру, описанную в комментарии 'hardcorevenom' здесь.
Вы также можете попробовать этот класс, как показано здесь, если ничего не работает.