diff --git a/src/Composer/XdebugHandler.php b/src/Composer/XdebugHandler.php index cdd7e68ec..843784b4c 100644 --- a/src/Composer/XdebugHandler.php +++ b/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; } }