diff --git a/src/Composer/Downloader/ZipDownloader.php b/src/Composer/Downloader/ZipDownloader.php index 00f7fbd1b..6217aaa53 100644 --- a/src/Composer/Downloader/ZipDownloader.php +++ b/src/Composer/Downloader/ZipDownloader.php @@ -56,10 +56,6 @@ class ZipDownloader extends ArchiveDownloader self::$hasZipArchive = class_exists('ZipArchive'); } - if (null === self::$isWindows) { - self::$isWindows = Platform::isWindows(); - } - if (!self::$hasZipArchive && !self::$hasSystemUnzip) { // php.ini path is added to the error message to help users find the correct file $iniMessage = IniHelper::getMessage(); @@ -68,6 +64,15 @@ class ZipDownloader extends ArchiveDownloader throw new \RuntimeException($error); } + if (null === self::$isWindows) { + self::$isWindows = Platform::isWindows(); + + if (!self::$isWindows && !self::$hasSystemUnzip) { + $this->io->writeError("As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension."); + $this->io->writeError("This may cause invalid reports of corrupted archives. Installing 'unzip' may remediate them."); + } + } + return parent::download($package, $path, $output); }