我想阻止php脚本修改$_SERVER
全局内容。
特别是我不想允许
unset $_SERVER['foo'];
但禁止任何修改都会很好,例如模块或php.ini声明。
有吗?
答案 0 :(得分:0)
如果你控制了根级别脚本,你可以复制它:
$_my_server = $_SERVER;
我认为了解你的理由会有所帮助; $_SERVER
变量不应该被包含的脚本修改,因为很少有人需要修改它。它是在运行时生成的,因此任何更改都不会持续到后续的脚本运行。
关于php.ini
声明的额外观点更令人困惑 - $_SERVER
的许多组件的意思是通知脚本有关这些声明,因此让它发送假数据似乎很奇怪用例,也许不可能。
答案 1 :(得分:0)
不是我所知道的。 如果您在整个代码中依赖$ _SERVER的内容,并且不想要其他代码(插件?)来修改它,那么最好的选择是在应用程序的引导阶段制作副本,然后在整个代码中使用该副本:
$serverDetails = $_SERVER;
$foo = $serverDetails['foo'];