Проверить, поврежден файл jar или нет в php?

#java #php #jar

#java #php #jar

Вопрос:

Я запускаю файл jar через php, используя функцию exec ();

Однако мне нужно проверить, поврежден файл jar или нет, используя функцию php.

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

1. Если целостность ваших JAR-файлов так важна для вас, рассмотрите возможность использования подписанных JAR-файлов , а затем используйте jarsigner -verify myjar.jar для проверки подписи

2. Если вы просто беспокоитесь о проблемах с согласованностью файлов, вы могли бы также «просто сохранить» где-нибудь значения md5 и сравнить их. Но я согласен, если вам действительно не все равно, то подписание может быть лучшим подходом!

Ответ №1:

Вы можете проверить, поврежден ли jar с помощью zip, поскольку файл jar представляет собой архивированный файл, так что это даст вам представление:

 $myfile = '/my/jar/file.jar';

$zip = new ZipArchive();
$res = $zip->open($myfile, ZipArchive::CHECKCONS);
if ($res !== TRUE) {
    switch($res) {
        case ZipArchive::ER_NOZIP:
            die('not a zip archive');
        case ZipArchive::ER_INCONS :
            die('consistency check failed');
        case ZipArchive::ER_CRC :
            die('checksum failed');
        default:
            die('error ' . $res);
    }
}
  

Для работы с zip-файлами вам потребуется установить расширение php zip