Преглед изворни кода

Fix the ZipDownloader to catch the exceptions thrown in Symfony process.
The problem was introduced in 72d4bea8 and causes composer to not fallback
to ZipArchive when unzip can not be executed (i.e. when proc_open() is
not allowed).

Christian Schiffler пре 10 година
родитељ
комит
7cec839d30
1 измењених фајлова са 10 додато и 4 уклоњено
  1. 10 4
      src/Composer/Downloader/ZipDownloader.php

+ 10 - 4
src/Composer/Downloader/ZipDownloader.php

@@ -39,11 +39,17 @@ class ZipDownloader extends ArchiveDownloader
         // try to use unzip on *nix
         if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
             $command = 'unzip '.escapeshellarg($file).' -d '.escapeshellarg($path) . ' && chmod -R u+w ' . escapeshellarg($path);
-            if (0 === $this->process->execute($command, $ignoredOutput)) {
-                return;
-            }
+            try {
+                if (0 === $this->process->execute($command, $ignoredOutput)) {
+                    return;
+                }
 
-            $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput();
+                $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput();
+            }
+            catch(\Exception $e)
+            {
+                $processError = $e->getMessage();
+            }
         }
 
         if (!class_exists('ZipArchive')) {