我已经使用“ mod_security2”保护了服务器的安全,并将“ Server:”标头更改为其他值。它说:“服务器:exampleserver”。 我使用了以下mod_security选项:
ServerTokens Full
SecServerSignature exampleserver
一个副作用是$_SERVER["SERVER_SOFTWARE"]
也等于“ exampleserver”。
因此确定服务器类型的典型代码不再有效:
if( strpos( $_SERVER['SERVER_SOFTWARE'], 'Apache') !== false)
echo 'Have Apache';
else
echo 'Have some other server';
在检查可从PHP获得的信息时,我发现此特定的PHP7安装程序具有在Apache中加载的“ apache2handler”扩展名。
所以我将测试更新为:
$isApache= extension_loaded('apache2handler')
||(strpos(getenv('SERVER_SOFTWARE'),'Apache')!==false);
当$_SERVER['SERVER_SOFTWARE']
不可用时,是否有更好的方法来确定PHP内的服务器类型?
答案 0 :(得分:0)
您可以使用php_sapi_name()
function来确定PHP的运行方式。在我的Web服务器上,这将返回“ apache2handler”。在命令行上,它返回“ cli”。