Skip to content

Commit 8cf621e

Browse files
committedMar 17, 2023
Test FPM FCGI envs with path info fix for Apache proxy handler
1 parent b53b0ac commit 8cf621e

3 files changed

+178
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
--TEST--
2+
FPM: FastCGI env var path info fix for Apache handler basic
3+
--SKIPIF--
4+
<?php include "skipif.inc"; ?>
5+
--FILE--
6+
<?php
7+
8+
require_once "tester.inc";
9+
10+
$cfg = <<<EOT
11+
[global]
12+
error_log = {{FILE:LOG}}
13+
[unconfined]
14+
listen = {{ADDR}}
15+
pm = dynamic
16+
pm.max_children = 5
17+
pm.start_servers = 1
18+
pm.min_spare_servers = 1
19+
pm.max_spare_servers = 3
20+
php_admin_value[cgi.fix_pathinfo] = yes
21+
EOT;
22+
23+
$code = <<<EOT
24+
<?php
25+
echo \$_SERVER["SCRIPT_NAME"] . "\n";
26+
echo \$_SERVER["SCRIPT_FILENAME"] . "\n";
27+
echo \$_SERVER["PATH_INFO"] . "\n";
28+
echo \$_SERVER["PHP_SELF"];
29+
EOT;
30+
31+
$tester = new FPM\Tester($cfg, $code);
32+
[$sourceFilePath, $scriptName] = $tester->createSourceFileAndScriptName();
33+
$tester->start();
34+
$tester->expectLogStartNotices();
35+
$tester
36+
->request(
37+
headers: [
38+
'PATH_INFO' => '/pinfo',
39+
'PATH_TRANSLATED' => __DIR__ . '/pinfo',
40+
],
41+
uri: $scriptName . '/pinfo',
42+
scriptFilename: "proxy:fcgi://" . $tester->getAddr() . $sourceFilePath,
43+
scriptName: $scriptName,
44+
)
45+
->expectBody([$scriptName, $sourceFilePath, '/pinfo', $scriptName . '/pinfo']);
46+
$tester->terminate();
47+
$tester->close();
48+
49+
?>
50+
Done
51+
--EXPECT--
52+
Done
53+
--CLEAN--
54+
<?php
55+
require_once "tester.inc";
56+
FPM\Tester::clean();
57+
?>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
--TEST--
2+
FPM: FastCGI env var path info fix for Apache handler basic
3+
--SKIPIF--
4+
<?php include "skipif.inc"; ?>
5+
--FILE--
6+
<?php
7+
8+
require_once "tester.inc";
9+
10+
$cfg = <<<EOT
11+
[global]
12+
error_log = {{FILE:LOG}}
13+
[unconfined]
14+
listen = {{ADDR}}
15+
pm = dynamic
16+
pm.max_children = 5
17+
pm.start_servers = 1
18+
pm.min_spare_servers = 1
19+
pm.max_spare_servers = 3
20+
php_admin_value[cgi.fix_pathinfo] = yes
21+
EOT;
22+
23+
$code = <<<EOT
24+
<?php
25+
echo \$_SERVER["SCRIPT_NAME"] . "\n";
26+
echo \$_SERVER["SCRIPT_FILENAME"] . "\n";
27+
echo \$_SERVER["PATH_INFO"] . "\n";
28+
echo \$_SERVER["PHP_SELF"];
29+
EOT;
30+
31+
$tester = new FPM\Tester($cfg, $code);
32+
[$sourceFilePath, $scriptName] = $tester->createSourceFileAndScriptName();
33+
$tester->start();
34+
$tester->expectLogStartNotices();
35+
$tester
36+
->request(
37+
query: 'q=1',
38+
headers: [
39+
'PATH_INFO' => '/pinfo',
40+
'PATH_TRANSLATED' => __DIR__ . '/pinfo',
41+
],
42+
uri: $scriptName . '/pinfo',
43+
scriptFilename: "proxy:fcgi://" . $tester->getAddr() . $sourceFilePath . '?q=1',
44+
scriptName: $scriptName,
45+
)
46+
->expectBody([$scriptName, $sourceFilePath, '/pinfo', $scriptName . '/pinfo']);
47+
$tester->terminate();
48+
$tester->close();
49+
50+
?>
51+
Done
52+
--EXPECT--
53+
Done
54+
--CLEAN--
55+
<?php
56+
require_once "tester.inc";
57+
FPM\Tester::clean();
58+
?>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
--TEST--
2+
FPM: FastCGI env var path info fix for Apache handler basic
3+
--SKIPIF--
4+
<?php
5+
include "skipif.inc";
6+
if (ini_get('doc_root')) {
7+
die('skip: The doc_root ini has to be unset for this test to work');
8+
}
9+
?>
10+
--FILE--
11+
<?php
12+
13+
require_once "tester.inc";
14+
15+
$cfg = <<<EOT
16+
[global]
17+
error_log = {{FILE:LOG}}
18+
[unconfined]
19+
listen = {{ADDR}}
20+
pm = dynamic
21+
pm.max_children = 5
22+
pm.start_servers = 1
23+
pm.min_spare_servers = 1
24+
pm.max_spare_servers = 3
25+
php_admin_value[cgi.fix_pathinfo] = yes
26+
EOT;
27+
28+
$code = <<<EOT
29+
<?php
30+
echo \$_SERVER["SCRIPT_NAME"] . "\n";
31+
echo \$_SERVER["SCRIPT_FILENAME"] . "\n";
32+
echo \$_SERVER["PATH_INFO"] . "\n";
33+
echo \$_SERVER["PHP_SELF"];
34+
EOT;
35+
36+
$tester = new FPM\Tester($cfg, $code);
37+
[$sourceFilePath, $scriptName] = $tester->createSourceFileAndScriptName();
38+
$tester->start();
39+
$tester->expectLogStartNotices();
40+
$tester
41+
->request(
42+
headers: [
43+
'PATH_INFO' => '/pinfo',
44+
'PATH_TRANSLATED' => __DIR__ . '/pinfo',
45+
'DOCUMENT_ROOT' => null,
46+
],
47+
uri: $scriptName . '/pinfo',
48+
scriptFilename: "proxy:fcgi://" . $tester->getAddr() . $sourceFilePath,
49+
scriptName: $scriptName,
50+
)
51+
->expectBody([$scriptName, $sourceFilePath, '/pinfo', $scriptName . '/pinfo']);
52+
$tester->terminate();
53+
$tester->close();
54+
55+
?>
56+
Done
57+
--EXPECT--
58+
Done
59+
--CLEAN--
60+
<?php
61+
require_once "tester.inc";
62+
FPM\Tester::clean();
63+
?>

0 commit comments

Comments
 (0)