posix_uname() отключен по соображениям безопасности

Я получаю это сообщение об ошибке, отображаемое в заголовке на веб-сайте и в журнале error_log сайта:

[18-Nov-2017 23:06:13 America/New_York] Предупреждение PHP: функция posix_uname() отключена по соображениям безопасности в /home/reddirtr/public_html/holland_college_mw19/includes/GlobalFunctions.php в строке 1450.

Как изменить код в GlobalFunctions.php, чтобы убрать предупреждение?

function wfHostname() {
static $host;
if ( is_null( $host ) ) {

    # Hostname overriding
    global $wgOverrideHostname;
    if ( $wgOverrideHostname !== false ) {
        # Set static and skip any detection
        $host = $wgOverrideHostname;
        return $host;
    }

    if ( function_exists( 'posix_uname' ) ) {
        // This function not present on Windows
        $uname = posix_uname();
    } else {
        $uname = false;
    }
    if ( is_array( $uname ) && isset( $uname['nodename'] ) ) {
        $host = $uname['nodename'];
    } elseif ( getenv( 'COMPUTERNAME' ) ) {
        # Windows computer name
        $host = getenv( 'COMPUTERNAME' );
    } else {
        # This may be a virtual server.
        $host = $_SERVER['SERVER_NAME'];
    }
}
return $host;

}


person Ron K.    schedule 19.11.2017    source источник


Ответы (2)


Вы можете использовать символ @, чтобы скрыть любые сообщения об ошибках, сгенерированные этим выражение:

PHP поддерживает один оператор контроля ошибок: знак @. При добавлении к выражению в PHP любые сообщения об ошибках, которые могут быть сгенерированы этим выражением, будут игнорироваться.

Вы можете использовать его следующим образом:

if ( function_exists( 'posix_uname' ) ) {
    // This function not present on Windows
    $uname = @posix_uname();
} else {
    $uname = false;
}

Имейте в виду, что это не устраняет проблему, а просто скрывает сообщение об ошибке. Также вы можете прочитать главу "Ошибки -> Основные" для базовые настройки для скрытия/отображения сообщений об ошибках в вашем скрипте.

person Progman    schedule 19.11.2017
comment
Использование знака «@», как вы указали, помогло и подавило сообщение об ошибке, которое я получал. Спасибо. Как я могу изменить это утверждение, чтобы переменная $uname была ложной? - person Ron K.; 19.11.2017
comment
@РонК. Вы можете проверить результат этого оператора, когда функция заблокирована. Я предполагаю, что это будет null, так что вы можете проверить его. - person Progman; 19.11.2017

По умолчанию сервер блокирует некоторые функции при возникновении каких-либо подозрительных действий. Итак, попробуйте отредактировать файл php.ini, добавив

disable_functions=

эта функция устанавливает disable_functions в none. При необходимости вы можете добавить некоторые функции.

person Santosh Reddy    schedule 30.05.2018