|
| 1 | +--TEST-- |
| 2 | +FPM: FastCGI env var without path info fix for Apache handler with PATH_INFO, PATH_TRANSLATED and path discard |
| 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] = no |
| 21 | +php_admin_value[cgi.discard_path] = yes |
| 22 | +EOT; |
| 23 | + |
| 24 | +$code = <<<EOT |
| 25 | +<?php |
| 26 | +echo \$_SERVER["SCRIPT_NAME"] . "\n"; |
| 27 | +echo \$_SERVER["SCRIPT_FILENAME"] . "\n"; |
| 28 | +echo \$_SERVER["PATH_INFO"] . "\n"; |
| 29 | +echo \$_SERVER["PHP_SELF"]; |
| 30 | +EOT; |
| 31 | + |
| 32 | +$tester = new FPM\Tester($cfg, $code); |
| 33 | +[$sourceFilePath, $scriptName] = $tester->createSourceFileAndScriptName(); |
| 34 | +$tester->start(); |
| 35 | +$tester->expectLogStartNotices(); |
| 36 | +$tester |
| 37 | + ->request( |
| 38 | + headers: [ |
| 39 | + 'PATH_INFO' => '/pinfo', |
| 40 | + 'PATH_TRANSLATED' => __DIR__ . '/pinfo', |
| 41 | + ], |
| 42 | + uri: $scriptName . '/pinfo', |
| 43 | + scriptFilename: "proxy:fcgi://" . $tester->getAddr() . $sourceFilePath, |
| 44 | + scriptName: $scriptName, |
| 45 | + ) |
| 46 | + ->expectBody([$scriptName, $sourceFilePath, '/pinfo', '/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 | +?> |
0 commit comments