nginx + php 7 + filter_input + Homestead

nginx + php 7 + filter_input + Homestead

我需要验证 URL,然后下一个代码可以与 php 和 apache 完美运行:

$url = filter_input(INPUT_GET, 'url', FILTER_SANITIZE_URL)

示例:使用此 URL:plantilla_mvc.net//////controlador/metodo/////argumentos

它正在转换为:/controlador/metodo/argumentos (没有 //////

但是使用 nginx 却不行

然后我尝试:

$url = filter_input(INPUT_SERVER,'REQUEST_URI',FILTER_SANITIZE_URL);

但是 filter_input不适用于 INPUT_SERVER

我怎么解决这个问题??

感谢您的帮助

答案1

看起来是一个已知问题,请参阅https://github.com/xwp/stream/issues/254

由于 PHP 确认了一个错误,filter_input(INPUT_SERVER,'anything') 会在 FCGI/PHP 5.4(可能还有更旧的版本)的某些实现上返回 null。 https://bugs.php.net/bug.php?id=49184

使用中提到的解决方法 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=730094

if (filter_has_var(INPUT_SERVER, "SERVER_NAME")) {
        $servername = filter_input(INPUT_SERVER, "SERVER_NAME",
FILTER_UNSAFE_RAW, FILTER_NULL_ON_FAILURE);
    } else {
        if (isset($_SERVER["SERVER_NAME"]))
            $servername = filter_var($_SERVER["SERVER_NAME"],
FILTER_UNSAFE_RAW, FILTER_NULL_ON_FAILURE);
        else
            $servername = null;
    }

相关内容