出于安全原因,posix_uname()已被禁用

时间:2017-11-19 05:17:07

标签: php wikimedia

我一直收到此错误消息显示为网站和网站error_log中的标题:

[18-Nov-2017 23:06:13 America / New_York] PHP警告:posix_uname()出于安全原因在第1450行的/home/reddirtr/public_html/holland_college_mw19/includes/GlobalFunctions.php中被禁用

如何更改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;

}

2 个答案:

答案 0 :(得分:0)

您可以使用@字符隐藏从该表达式生成的任何错误消息:

  

PHP支持一个错误控制操作符:at符号(@)。当在PHP中添加表达式之前,将忽略该表达式可能生成的任何错误消息。

您可以按照以下方式使用它:

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

请记住,它没有解决问题,只是隐藏了错误消息。另外,您可以阅读章节"Errors -> Basic"了解基本配置,以隐藏/显示脚本中的错误消息。

答案 1 :(得分:0)

默认情况下,如果发生任何可疑活动,服务器会阻止某些功能。因此,请尝试通过添加

来编辑for(k=0; k<10; k++) { if(k<5) { a[k]=k+1; j=k+5; b[j] = a[k]; } else { a[k] = k+1; j = k-5; b[j] = a[k]; } printf("%d %d \n",j,k); } 文件
php.ini

该函数将disable_functions= 设置为无。如果需要,您可以添加一些功能。