Skip to content

Commit 4facd41

Browse files
Merge branch '5.4' into 6.4
* 5.4: Do not read from argv on non-CLI SAPIs [Process] Use %PATH% before %CD% to load the shell on Windows [HttpFoundation] Reject URIs that contain invalid characters [HttpClient] Filter private IPs before connecting when Host == IP
2 parents 033988f + 443f7d2 commit 4facd41

File tree

5 files changed

+31
-7
lines changed

5 files changed

+31
-7
lines changed

SymfonyRuntime.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public function __construct(array $options = [])
9595

9696
if (isset($options['env'])) {
9797
$_SERVER[$envKey] = $options['env'];
98-
} elseif (isset($_SERVER['argv']) && class_exists(ArgvInput::class)) {
98+
} elseif (empty($_GET) && isset($_SERVER['argv']) && class_exists(ArgvInput::class)) {
9999
$this->options = $options;
100100
$this->getInput();
101101
}
@@ -203,6 +203,10 @@ protected static function register(GenericRuntime $runtime): GenericRuntime
203203

204204
private function getInput(): ArgvInput
205205
{
206+
if (!empty($_GET) && filter_var(ini_get('register_argc_argv'), \FILTER_VALIDATE_BOOL)) {
207+
throw new \Exception('CLI applications cannot be run safely on non-CLI SAPIs with register_argc_argv=On.');
208+
}
209+
206210
if (isset($this->input)) {
207211
return $this->input;
208212
}

Tests/phpt/kernel-loop.phpt

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ require __DIR__.'/kernel-loop.php';
1111

1212
?>
1313
--EXPECTF--
14-
OK Kernel foo_bar
15-
OK Kernel foo_bar
14+
OK Kernel (env=dev) foo_bar
15+
OK Kernel (env=dev) foo_bar
1616
0

Tests/phpt/kernel.php

+5-3
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,19 @@
1717

1818
class TestKernel implements HttpKernelInterface
1919
{
20+
private string $env;
2021
private string $var;
2122

22-
public function __construct(string $var)
23+
public function __construct(string $env, string $var)
2324
{
25+
$this->env = $env;
2426
$this->var = $var;
2527
}
2628

2729
public function handle(Request $request, $type = self::MAIN_REQUEST, $catch = true): Response
2830
{
29-
return new Response('OK Kernel '.$this->var);
31+
return new Response('OK Kernel (env='.$this->env.') '.$this->var);
3032
}
3133
}
3234

33-
return fn (array $context) => new TestKernel($context['SOME_VAR']);
35+
return fn (array $context) => new TestKernel($context['APP_ENV'], $context['SOME_VAR']);

Tests/phpt/kernel.phpt

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ require $_SERVER['SCRIPT_FILENAME'] = __DIR__.'/kernel.php';
99

1010
?>
1111
--EXPECTF--
12-
OK Kernel foo_bar
12+
OK Kernel (env=dev) foo_bar
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
--TEST--
2+
Test HttpKernelInterface with register_argc_argv=1
3+
--INI--
4+
display_errors=1
5+
register_argc_argv=1
6+
--FILE--
7+
<?php
8+
9+
// emulating PHP behavior with register_argc_argv=1
10+
$_GET['-e_test'] = '';
11+
$_SERVER['argc'] = 1;
12+
$_SERVER['argv'] = [' ', '-e', 'test'];
13+
14+
require $_SERVER['SCRIPT_FILENAME'] = __DIR__.'/kernel.php';
15+
16+
?>
17+
--EXPECTF--
18+
OK Kernel (env=dev) foo_bar

0 commit comments

Comments
 (0)