Вход Регистрация
Файл: forsoc.ru/manul/classes/WebServerEnvInfo.inc.php
Строк: 226
<?php

class WebServerEnvInfo
{

    private function 
getServerVar($serverVarName)
    {
        return empty(
$_SERVER[$serverVarName]) ? 'None' : $_SERVER[$serverVarName];
    }

    public function 
__construct()
    {

        
$this->scriptFilename = $this->getServerVar('SCRIPT_FILENAME');
        
$this->documentRoot = $this->getServerVar('DOCUMENT_ROOT');
        
$this->httpHost = $this->getServerVar('HTTP_HOST');
        
$this->adminEmail = $this->getServerVar('SERVER_ADMIN');
        
$this->time = date('Y.m.d H:i:s', $this->getServerVar('REQUEST_TIME'));
        
$this->serverAddr = $this->getServerVar('SERVER_ADDR');
        
$this->serverSoftware = $this->getServerVar('SERVER_SOFTWARE');
        
$this->serverGateway = $this->getServerVar('GATEWAY_INTERFACE');
        
$this->serverSignature = $this->getServerVar('SERVER_SIGNATURE');

        
$this->serverHostname = @php_uname('n');
        
$this->serverPlatform = @php_uname('s') . ' ' . @php_uname('r') . ' ' . @php_uname('v');
        
$this->serverArchitecture = @php_uname('m');
        
$this->username = 'uid: ' . @getmyuid() . ', gid: ' . @getmygid();
        
$this->pathinfo = getcwd();
        
$this->phpinfo = $this->getCompactPhpInfo();
    }

    public function 
getXMLNode()
    {
        
$dom = new DOMDocument('1.0', 'utf-8');
        
$serverEnvNode = $dom->createElement('server_environment');
        
$serverEnvNode->appendChild($dom->createElement('script_filename', $this->scriptFilename));
        
$serverEnvNode->appendChild($dom->createElement('document_root', $this->documentRoot));
        
$serverEnvNode->appendChild($dom->createElement('http_host', $this->httpHost));
        
$serverEnvNode->appendChild($dom->createElement('admin_email', $this->adminEmail));
        
$serverEnvNode->appendChild($dom->createElement('time', $this->time));
        
$serverEnvNode->appendChild($dom->createElement('server_addr', $this->serverAddr));
        
$serverEnvNode->appendChild($dom->createElement('software', $this->serverSoftware));
        
$serverEnvNode->appendChild($dom->createElement('server_gateway', $this->serverGateway));
        
$serverEnvNode->appendChild($dom->createElement('server_signature', $this->serverSignature));
        
$serverEnvNode->appendChild($dom->createElement('server_hostname', $this->serverHostname));
        
$serverEnvNode->appendChild($dom->createElement('platform_name', $this->serverPlatform));
        
$serverEnvNode->appendChild($dom->createElement('server_architecture', $this->serverArchitecture));
        
$serverEnvNode->appendChild($dom->createElement('username', $this->username));
        
$serverEnvNode->appendChild($dom->createElement('path', $this->pathinfo));
        
$serverEnvNode->appendChild($dom->createElement('phpinfo', $this->phpinfo));
        
$dom->appendChild($serverEnvNode);
        return 
$dom->getElementsByTagName('server_environment')->item(0);
    }

    private function 
extractValue(&$parStr, $parName)
    {
        if (
preg_match('|<tr><td class="e">s*' . $parName . 's*</td><td class="v">(.+?)</td>|sm', $parStr, $lResult)) {
            return 
str_replace('no value', '', strip_tags($lResult[1]));
        }
    }

    private function 
getCompactPhpInfo()
    {
        if (
function_exists('phpinfo') && is_callable('phpinfo')) {
            
ob_start();
            
phpinfo();
            
$phpInfo = ob_get_contents();
            
ob_end_clean();

            
$phpInfo = str_replace('border: 1px', '', $phpInfo);
            
preg_match('|<body>(.*)</body>|smiu', $phpInfo, $PhpInfoBody);

            
$phpInfoSystem = $this->extractValue($phpInfo, 'System');
            
$phpPHPAPI = $this->extractValue($phpInfo, 'Server API');
            
$allowUrlFOpen = $this->extractValue($phpInfo, 'allow_url_fopen');
            
$allowUrlInclude = $this->extractValue($phpInfo, 'allow_url_include');
            
$disabledFunction = $this->extractValue($phpInfo, 'disable_functions');
            
$displayErrors = $this->extractValue($phpInfo, 'display_errors');
            
$errorReporting = $this->extractValue($phpInfo, 'error_reporting');
            
$exposePHP = $this->extractValue($phpInfo, 'expose_php');
            
$logErrors = $this->extractValue($phpInfo, 'log_errors');
            
$MQGPC = $this->extractValue($phpInfo, 'magic_quotes_gpc');
            
$MQRT = $this->extractValue($phpInfo, 'magic_quotes_runtime');
            
$openBaseDir = $this->extractValue($phpInfo, 'open_basedir');
            
$registerGlobals = $this->extractValue($phpInfo, 'register_globals');
            
$safeMode = $this->extractValue($phpInfo, 'safe_mode');
            
$iniPath = $this->extractValue($phpInfo, 'Loaded Configuration File');
            
$fixPath = $this->extractValue($phpInfo, 'cgi.fix_pathinfo');

            
$disabledFunction = ($disabledFunction == '' ? '-?-' : $disabledFunction);
            
$openBaseDir = ($openBaseDir == '' ? '-?-' : $openBaseDir);

            
$result = 'Version: ' . phpversion() . '<br/>';
            
$result .= 'System Version: ' . $phpInfoSystem . '<br/>';
            
$result .= 'PHP API: ' . $phpPHPAPI . '<br/>';
            
$result .= 'allow_url_fopen: ' . $allowUrlFOpen . '<br/>';
            
$result .= 'allow_url_include: ' . $allowUrlInclude . '<br/>';
            
$result .= 'disable_functions: ' . str_replace('&nbsp;', ' ', $disabledFunction) . '<br/>';
            
$result .= 'display_errors: ' . $displayErrors . '<br/>';
            
$result .= 'error_reporting: ' . $errorReporting . '<br/>';
            
$result .= 'expose_php: ' . $exposePHP . '<br/>';
            
$result .= 'log_errors: ' . $logErrors . '<br/>';
            
$result .= 'magic_quotes_gpc: ' . $MQGPC . '<br/>';
            
$result .= 'magic_quotes_runtime: ' . $MQRT . '<br/>';
            
$result .= 'register_globals: ' . $registerGlobals . '<br/>';
            
$result .= 'open_basedir: ' . $openBaseDir . '<br/>';
            
$result .= 'Ini Path: ' . $iniPath . '<br/>';
            
$result .= 'CGI.FixPathInfo: ' . $fixPath . '<br/>';

            
$result .= 'safe_mode: ' . $safeMode . '<br/>';
        } else {
            
$result = 'phpinfo() is disabled' . '<br/>';
        }

        
$cmdList = explode(',', 'popen,exec,ftp_exec,system,passthru,get_current_user,proc_open,shell_exec,ini_restore,getmygid,dl,symlink,chgrp,ini_set,putenv,extension_loaded,getmyuid,fsockopen,posix_setuid,posix_setsid,posix_setpgid,posix_kill,apache_child_terminate,chmod,chdir,pcntl_exec,phpinfo,virtual,proc_close,proc_get_status,proc_terminate,proc_nice,proc_getstatus,proc_close,escapeshellcmd,escapeshellarg,show_source,pclose,safe_dir,dl,ini_restore,chown,chgrp,shown_source,mysql_list_dbs,get_current_user,getmyid,leak,pfsockopen');

        
$result .= "nList of enabled functions: ";
        foreach (
$cmdList as $F) {
            if (
function_exists($F) && is_callable($F)) {
                
$result .= $F . ' ';
            }
        }

        
$result .= '<br/>List of disabled functions: ';
        foreach (
$cmdList as $F) {
            if (!(
function_exists($F) && is_callable($F))) {
                
$result .= $F . ' ';
            }
        }

        return 
$result;
    }

    public function 
__toString()
    {
        
$data = array($this->scriptFilename, $this->documentRoot, $this->httpHost, $this->adminEmail, $this->time);
        return 
implode(';', $data);
    }
}
Онлайн: 2
Реклама