mirror of
https://github.com/php/php-src.git
synced 2026-03-26 09:12:14 +01:00
Without this fix, a webpage using eval() may return code 500. That might display fine and the 500 go unnoticed, but using AJAX or wget, the 500 will cause problems.
83 lines
1.5 KiB
PHP
83 lines
1.5 KiB
PHP
--TEST--
|
|
Bug #61977 Test exit code for various errors
|
|
--SKIPIF--
|
|
<?php
|
|
include "skipif.inc";
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
include "php_cli_server.inc";
|
|
php_cli_server_start(<<<'SCRIPT'
|
|
ini_set('display_errors', 0);
|
|
switch($_SERVER["REQUEST_URI"]) {
|
|
case "/parse":
|
|
eval("this is a parse error");
|
|
echo "OK\n";
|
|
break;
|
|
case "/fatal":
|
|
eval("foo();");
|
|
echo "OK\n";
|
|
break;
|
|
case "/compile":
|
|
eval("class foo { final private final function bar() {} }");
|
|
echo "OK\n";
|
|
break;
|
|
case "/fatal2":
|
|
foo();
|
|
echo "OK\n";
|
|
break;
|
|
default:
|
|
return false;
|
|
}
|
|
SCRIPT
|
|
);
|
|
|
|
list($host, $port) = explode(':', PHP_CLI_SERVER_ADDRESS);
|
|
$port = intval($port)?:80;
|
|
|
|
foreach(array("parse", "fatal", "fatal2", "compile") as $url) {
|
|
$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
|
|
if (!$fp) {
|
|
die("connect failed");
|
|
}
|
|
|
|
if(fwrite($fp, <<<HEADER
|
|
GET /$url HTTP/1.1
|
|
Host: {$host}
|
|
|
|
|
|
HEADER
|
|
)) {
|
|
while (!feof($fp)) {
|
|
echo fgets($fp);
|
|
}
|
|
}
|
|
}
|
|
|
|
?>
|
|
--EXPECTF--
|
|
HTTP/1.1 200 OK
|
|
Host: localhost
|
|
Connection: close
|
|
X-Powered-By: %s
|
|
Content-type: text/html
|
|
|
|
OK
|
|
HTTP/1.0 500 Internal Server Error
|
|
Host: localhost
|
|
Connection: close
|
|
X-Powered-By: %s
|
|
Content-type: text/html
|
|
|
|
HTTP/1.0 500 Internal Server Error
|
|
Host: localhost
|
|
Connection: close
|
|
X-Powered-By: %s
|
|
Content-type: text/html
|
|
|
|
HTTP/1.0 500 Internal Server Error
|
|
Host: localhost
|
|
Connection: close
|
|
X-Powered-By: %s
|
|
Content-type: text/html
|