nginx + php 7 + filter_input +宅基地

我需要validation的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

我怎么解决这个问题??

谢谢你的帮助

看起来像一个已知的问题,请参阅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; }