mirror of
https://github.com/php/php-src.git
synced 2024-09-27 21:07:25 +00:00
add tests for PATH_INFO
update php_cli_server.inc to support no router server
This commit is contained in:
parent
f17a215493
commit
455bc9df4c
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
define ("PHP_CLI_SERVER_ADDRESS", "localhost:8964");
|
||||
|
||||
function php_cli_server_start($code = 'echo "Hello world";') {
|
||||
function php_cli_server_start($code = 'echo "Hello world";', $no_router = FALSE) {
|
||||
$php_executable = getenv('TEST_PHP_EXECUTABLE');
|
||||
$doc_root = __DIR__;
|
||||
$router = "router.php";
|
||||
$router = "index.php";
|
||||
file_put_contents($doc_root . '/' . $router, '<?php ' . $code . ' ?>');
|
||||
|
||||
$descriptorspec = array(
|
||||
@ -13,14 +13,18 @@ function php_cli_server_start($code = 'echo "Hello world";') {
|
||||
2 => STDERR,
|
||||
);
|
||||
|
||||
$cmd = "exec {$php_executable} -t {$doc_root} -S " . PHP_CLI_SERVER_ADDRESS . " {$router}";
|
||||
$cmd = "exec {$php_executable} -t {$doc_root} -S " . PHP_CLI_SERVER_ADDRESS;
|
||||
|
||||
if (!$no_router) {
|
||||
$cmd .= " {$router}";
|
||||
}
|
||||
|
||||
$handle = proc_open($cmd, $descriptorspec, $pipes, $doc_root);
|
||||
|
||||
register_shutdown_function(
|
||||
function($handle) {
|
||||
function($handle) use($router) {
|
||||
proc_terminate($handle);
|
||||
@unlink(__DIR__ . "/router.php");
|
||||
@unlink(__DIR__ . "/{$router}");
|
||||
},
|
||||
$handle
|
||||
);
|
||||
|
99
sapi/cli/tests/php_cli_server_009.phpt
Normal file
99
sapi/cli/tests/php_cli_server_009.phpt
Normal file
@ -0,0 +1,99 @@
|
||||
--TEST--
|
||||
PATH_INFO (relevant to #60112)
|
||||
--DESCRIPTION--
|
||||
After this fix(#60112), previously 404 request like "localhost/foo/bar"
|
||||
now could serve correctly with request_uri "index.php" and PATH_INFO "/foo/bar/"
|
||||
--SKIPIF--
|
||||
<?php
|
||||
include "skipif.inc";
|
||||
if (substr(PHP_OS, 0, 3) == 'WIN') {
|
||||
die ("skip not for Windows");
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
include "php_cli_server.inc";
|
||||
php_cli_server_start('var_dump($_SERVER["PATH_INFO"]);', TRUE);
|
||||
|
||||
list($host, $port) = explode(':', PHP_CLI_SERVER_ADDRESS);
|
||||
$port = intval($port)?:80;
|
||||
|
||||
$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
|
||||
if (!$fp) {
|
||||
die("connect failed");
|
||||
}
|
||||
|
||||
if(fwrite($fp, <<<HEADER
|
||||
GET /foo/bar HTTP/1.1
|
||||
Host: {$host}
|
||||
|
||||
|
||||
HEADER
|
||||
)) {
|
||||
while (!feof($fp)) {
|
||||
echo fgets($fp);
|
||||
}
|
||||
}
|
||||
|
||||
fclose($fp);
|
||||
|
||||
$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
|
||||
if (!$fp) {
|
||||
die("connect failed");
|
||||
}
|
||||
|
||||
|
||||
if(fwrite($fp, <<<HEADER
|
||||
GET /foo/bar/ HTTP/1.0
|
||||
Host: {$host}
|
||||
|
||||
|
||||
HEADER
|
||||
)) {
|
||||
while (!feof($fp)) {
|
||||
echo fgets($fp);
|
||||
}
|
||||
}
|
||||
|
||||
fclose($fp);
|
||||
|
||||
$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
|
||||
if (!$fp) {
|
||||
die("connect failed");
|
||||
}
|
||||
|
||||
|
||||
if(fwrite($fp, <<<HEADER
|
||||
GET /foo/bar.js HTTP/1.0
|
||||
Host: {$host}
|
||||
|
||||
|
||||
HEADER
|
||||
)) {
|
||||
while (!feof($fp)) {
|
||||
echo fgets($fp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fclose($fp);
|
||||
?>
|
||||
--EXPECTF--
|
||||
[%s] %s
|
||||
HTTP/1.1 200 OK
|
||||
Host: %s
|
||||
Connection: closed
|
||||
X-Powered-By: PHP/%s-dev
|
||||
Content-type: text/html
|
||||
|
||||
string(8) "/foo/bar"
|
||||
[%s] %s
|
||||
HTTP/1.0 200 OK
|
||||
Host: %s
|
||||
Connection: closed
|
||||
X-Powered-By: PHP/5.5.0-dev
|
||||
Content-type: text/html
|
||||
|
||||
string(9) "/foo/bar/"
|
||||
[%s] %s
|
||||
HTTP/1.0 404 Not Found
|
Loading…
Reference in New Issue
Block a user