Я сам столкнулся с этой проблемой в огромной кодовой базе с тысячами файлов.Вдохновленный решением, опубликованным @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");
}
}