Phar не удается извлечь файл

#php #phar #sentinel2

#php #phar #sentinel2

Вопрос:

Я пытаюсь извлечь tar-файл с помощью Phar Classe, но возвращает следующую ошибку:

 UnexpectedValueException Object ( [message:protected] => phar error: "/home/filelocation/file.tar" is a corrupted tar file (truncated) [string:Exception:private] => [code:protected] => 0 [file:protected] => /home/inplan/public_html/uncompress_files.php [line:protected] => 89 [trace:Exception:private] => Array ( [0] => Array ( [file] => /home/inplan/public_html/uncompress_files.php [line] => 89 [function] => __construct [class] => PharData [type] => -> [args] => Array ( [0] => uploads/maps/true_color_4.tar ) ) ) [previous:Exception:private] => )
 

PHP:

 try {
    $phar = new PharData('uploads/maps/true_color_'.$id_technical_report.'.tar');
    $phar2 = $phar->convertToExecutable (Phar::TAR,Phar::NONE);
    $phar2->extractTo('uploads/maps/');
} catch (Exception $e) {
    print_r($e);
}
 

Когда я загружаю этот файл, я могу открыть и извлечь его обычным способом с помощью Winrar.

Файл генерируется API из Sentinel Hub (https://services.sentinel-hub.com/api/v1/process )

Есть идеи, почему это происходит?

Спасибо

Комментарии:

1. Я думаю, что сообщение об ошибке довольно однозначное: «/home/filelocation/file.tar» — это поврежденный tar-файл (усеченный) . Пожалуйста, объясните, что вы сделали, чтобы решить эту проблему, и как мы можем помочь вам в дальнейшем.

2. На самом деле файл не поврежден. Я могу скачать и извлечь его.

3. Судя по вашему коду, вы также загрузили его. Вы уверены, что загрузка прошла хорошо? Вы сравнивали контрольные суммы? Иногда файлы могут быть повреждены, если в сеансе FTP не был установлен надлежащий режим передачи, чтобы привести только один пример того, что могло произойти.

4. Файл был создан на сервере с возвратом API, используя: file_put_contents(‘uploads / maps/ true_color_’.$id_technical_report.’.tar’,$response); Я загрузил точно такой же файл, и в Winrar он работает правильно.

5. Насколько он велик? Получаете ли вы какие-либо другие ошибки / предупреждения в журналах сервера?

Ответ №1:

Я получил то же сообщение от самодельной программы tar, создающей файл tar. Я не смог отменить его с помощью класса PHAR. Проблема заключалась в поле CRC, записанном в последней строке файла tar, которое было неправильно вычислено программой, создавшей исходный файл tar.