Przeglądaj źródła

Merge remote-tracking branch 'alcohol/fix-5667'

Jordi Boggiano 8 lat temu
rodzic
commit
be727a7a6b
1 zmienionych plików z 18 dodań i 1 usunięć
  1. 18 1
      src/Composer/XdebugHandler.php

+ 18 - 1
src/Composer/XdebugHandler.php

@@ -20,6 +20,8 @@ use Symfony\Component\Console\Output\OutputInterface;
 class XdebugHandler
 {
     const ENV_ALLOW = 'COMPOSER_ALLOW_XDEBUG';
+    const ENV_INI_SCAN_DIR = 'PHP_INI_SCAN_DIR';
+    const ENV_INI_SCAN_DIR_OLD = 'COMPOSER_PHP_INI_SCAN_DIR_OLD';
 
     private $output;
     private $loaded;
@@ -49,6 +51,15 @@ class XdebugHandler
     public function check()
     {
         if (!$this->needsRestart()) {
+            $originalIniScanDir = getenv(self::ENV_INI_SCAN_DIR_OLD);
+
+            if ($originalIniScanDir) {
+                putenv(self::ENV_INI_SCAN_DIR_OLD);
+                putenv(self::ENV_INI_SCAN_DIR.'=' . $originalIniScanDir);
+            } else {
+                putenv(self::ENV_INI_SCAN_DIR);
+            }
+
             return;
         }
 
@@ -204,7 +215,13 @@ class XdebugHandler
             if (!file_exists($this->scanDir) && !@mkdir($this->scanDir, 0777)) {
                 return;
             }
-            if (!putenv('PHP_INI_SCAN_DIR='.$this->scanDir)) {
+
+            $currentIniScanDir = getenv(self::ENV_INI_SCAN_DIR);
+            if ($currentIniScanDir) {
+                putenv(self::ENV_INI_SCAN_DIR_OLD.'='.$currentIniScanDir);
+            }
+
+            if (!putenv(self::ENV_INI_SCAN_DIR.'='.$this->scanDir)) {
                 return;
             }
         }