diff --git a/src/Symfony/Component/Process/ProcessUtils.php b/src/Symfony/Component/Process/ProcessUtils.php index d5f5d9cb08..84059cac73 100644 --- a/src/Symfony/Component/Process/ProcessUtils.php +++ b/src/Symfony/Component/Process/ProcessUtils.php @@ -46,6 +46,7 @@ class ProcessUtils } $escapedArgument = ''; + $quote = false; foreach (preg_split('/([%"])/i', $argument, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE) as $part) { if ('"' === $part) { $escapedArgument .= '\\"'; @@ -55,9 +56,17 @@ class ProcessUtils if ('\\' === substr($part, -1)) { $part .= '\\'; } - $escapedArgument .= escapeshellarg($part); + $part = escapeshellarg($part); + if ($part[0] === '"' && $part[strlen($part) - 1] === '"') { + $part = substr($part, 1, -1); + $quote = true; + } + $escapedArgument .= $part; } } + if ($quote) { + $escapedArgument = '"' . $escapedArgument . '"'; + } return $escapedArgument; }