我自己在包含数千个文件的庞大代码库中遇到了这个问题。受@sschueller 发布的解决方案的启发,我测试了这个 auto_prepend_file 代码,该代码记录事件以供调查。此方法还应与解析/标记化结合使用以捕获所有事件。
<?php
$vars = get_defined_vars();
foreach ($vars as $var => $value) {
if (in_array($var, array('$_SERVER', '$_REQUEST', '$_GET', '$_POST', '$_COOKIE', '$_SESSION', '$_FILES', '$_ENV'))) {
// only examine the local symbols, not superglobals
continue;
}
if (array_key_exists($var, $_REQUEST) && $value == $_REQUEST[$var]) {
error_log(sprintf("register_globals reliance detected in %s for variable %s=%s", $_SERVER['SCRIPT_FILENAME'], $var, $value), 3, "/var/tmp/register_globals.log");
}
}