PHP:register_long_数组已弃用(HTTP_*\u VARS)

PHP:register_long_数组已弃用(HTTP_*\u VARS),php,deprecated,Php,Deprecated,我最近更新到PHP5.3.6,有一些不推荐使用的函数和INI指令。我有以下功能: function ServerVar($varName) { global $HTTP_SERVER_VARS; global $HTTP_ENV_VARS; if(!isset($_SERVER)) { $_SERVER = $HTTP_SERVER_VARS; if(!isset($_SERVER["REMOTE_ADDR"])) $_SERVER = $HTTP_ENV_VA

我最近更新到PHP5.3.6,有一些不推荐使用的函数和INI指令。我有以下功能:

function ServerVar($varName) {
global $HTTP_SERVER_VARS;
global $HTTP_ENV_VARS;

if(!isset($_SERVER))
{
    $_SERVER = $HTTP_SERVER_VARS;
    if(!isset($_SERVER["REMOTE_ADDR"]))
        $_SERVER = $HTTP_ENV_VARS; // must be Apache
    }

if(isset($_SERVER[$varName]))
    return $_SERVER[$varName];
else
    return "";
}
运行该函数导致apache日志中出现错误:

<b>Deprecated</b>:  Directive 'register_long_arrays' is deprecated in PHP 5.3 and greater in <b>Unknown</b> on line <b>0</b><br />
但是,相同的错误仍然出现在apache日志中。解决这个问题的最佳方法是什么


谢谢

在PHP5.3中(实际上,我认为PHP5或更高版本的任何版本),您都不应该使用
$HTTP\u SERVER\u VARS
$HTTP\u ENV\u VARS
。只需使用
$\u服务器
。如果这不起作用,那么您的服务器需要修复其配置;没有像这样的代码解决方法。

对不起。该代码是4年前实施的。我只是在对它做一些维护:(这很痛苦,因为代码遵循的是FO而不是OO:(@Tanner:没有理由感到抱歉:)希望将来WTF更少:)
$\u服务器实际上是从PHP4.1.0开始存在的,PHP4.1.0是近十年前(2001年12月)发布的。任何古老的东西都有更大的问题酷!这就解决了问题。抱歉:P我不是PHP程序员:D
if(!isset($_SERVER))
{
    $_SERVER = &$HTTP_SERVER_VARS;
    if(!isset($_SERVER["REMOTE_ADDR"]))
        $_SERVER = &$HTTP_ENV_VARS; // must be Apache
    }

if(isset($_SERVER[$varName]))
    return $_SERVER[$varName];
else
    return "";
}