#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.