INPUT_SERVER returns 空

INPUT_SERVER returns null

当我尝试将 filter_inputINPUT_SERVER 一起使用时,我得到了奇怪的结果(我正在使用 PHP 5.6.9)。

我运行这个代码:

var_dump($_SERVER);
foreach (array_keys($_SERVER) as $varkey) {
     var_dump($varkey, filter_input(INPUT_SERVER, $varkey));
}

我得到每个 filter_input(INPUT_SERVER, $varkey) returns null。但是 $_SERVER 有正确的值。

为什么会这样?

这是一个已知的 PHP 错误。试试这个:

$result = filter_input(INPUT_SERVER, 'SERVER_NAME');
/*
 * overcome bug filter_input some php versions would return null 
 * on some implementations of FCGI/PHP 5.4 and probably older 
 * versions as well.
 * 
 * https://bugs.php.net/bug.php?id=49184
 */
if (empty($result) && isset($_SERVER['SERVER_NAME'])) {
    $result = Filter::sanitize($_SERVER['SERVER_NAME'], $filter);
}

这是我的包装,直到他们解决这个问题。在那之前它必须处理它。