Skip to content

Commit d94dda5

Browse files
[Process] Fix escaping /X arguments on Windows
1 parent 72baf6b commit d94dda5

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

Process.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1638,7 +1638,7 @@ private function escapeArgument(?string $argument): string
16381638
if (str_contains($argument, "\0")) {
16391639
$argument = str_replace("\0", '?', $argument);
16401640
}
1641-
if (!preg_match('/[\/()%!^"<>&|\s]/', $argument)) {
1641+
if (!preg_match('/[()%!^"<>&|\s]/', $argument)) {
16421642
return $argument;
16431643
}
16441644
$argument = preg_replace('/(\\\\+)$/', '$1$1', $argument);

Tests/ProcessTest.php

+6-1
Original file line numberDiff line numberDiff line change
@@ -1424,7 +1424,12 @@ public function testGetCommandLine()
14241424
{
14251425
$p = new Process(['/usr/bin/php']);
14261426

1427-
$expected = '\\' === \DIRECTORY_SEPARATOR ? '"/usr/bin/php"' : "'/usr/bin/php'";
1427+
$expected = '\\' === \DIRECTORY_SEPARATOR ? '/usr/bin/php' : "'/usr/bin/php'";
1428+
$this->assertSame($expected, $p->getCommandLine());
1429+
1430+
$p = new Process(['cd', '/d']);
1431+
1432+
$expected = '\\' === \DIRECTORY_SEPARATOR ? 'cd /d' : "'cd' '/d'";
14281433
$this->assertSame($expected, $p->getCommandLine());
14291434
}
14301435

0 commit comments

Comments
 (0)