Browse Source

Handle system proxy in file downloads

Jordan Alliot 13 years ago
parent
commit
1471b41ba8
1 changed files with 16 additions and 1 deletions
  1. 16 1
      src/Composer/Downloader/FileDownloader.php

+ 16 - 1
src/Composer/Downloader/FileDownloader.php

@@ -59,7 +59,22 @@ abstract class FileDownloader implements DownloaderInterface
             }
         }
 
-        copy($url, $fileName);
+        // Handle system proxy
+        if (isset($_SERVER['HTTP_PROXY'])) {
+            // http(s):// is not supported in proxy
+            $proxy = str_replace(array('http://', 'https://'), array('tcp://', 'ssl://'), $_SERVER['HTTP_PROXY']);
+
+            $ctx = stream_context_create(array(
+                'http' => array(
+                    'proxy'           => $proxy,
+                    'request_fulluri' => true,
+                ),
+            ));
+
+            copy($url, $filename, $ctx);
+        } else {
+            copy($url, $fileName);
+        }
 
         if (!file_exists($fileName)) {
             throw new \UnexpectedValueException($url.' could not be saved to '.$fileName.', make sure the'