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' здесь.

Вы также можете попробовать этот класс, как показано здесь, если ничего не работает.

Другие вопросы по тегам