PHP: register_long_arrays устарели (HTTP_*_VARS)

Я недавно обновился до PHP 5.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 />

Я изменил код следующим образом:

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. Каков наилучший способ решить эту проблему?

Спасибо!!


person Tu Hoang    schedule 05.08.2011    source источник


Ответы (1)


В PHP 5.3 (действительно, я думаю, любая версия PHP 5 или более поздняя любая версия PHP новее 4.1.0), вам не нужно использовать $HTTP_SERVER_VARS или $HTTP_ENV_VARS. Просто используйте $_SERVER. Если это не сработает, то необходимо исправить конфигурацию вашего сервера; не кодовые обходные пути, подобные этому.

person Billy ONeal    schedule 05.08.2011
comment
Извиняюсь. Код был введен 4 года назад. Я просто занимаюсь его обслуживанием :( И это болезненно, так как код следовал FO вместо OO :( - person Tu Hoang; 06.08.2011
comment
@Tanner: Нет причин для сожалений. :) Надеюсь, что в будущем WTF будет меньше :) - person Billy ONeal; 06.08.2011
comment
$_SERVER на самом деле существует с PHP 4.1.0, который был выпущен почти десять лет назад (декабрь 2001). Все, что древнее, имеет гораздо большие проблемы. :) - person ; 06.08.2011
comment
Прохладный! Это решает проблему. Извините: P Я не PHP-кодировщик: D - person Tu Hoang; 06.08.2011