예제 #1
0
function required_loader($unamestr = '')
{
    $un = empty($unamestr) ? uname() : $unamestr;
    $php_major_version = substr(PHP_VERSION, 0, 3);
    $os_name = substr($un, 0, strpos($un, ' '));
    $os_code = empty($os_name) ? '' : strtolower(substr($os_name, 0, 3));
    $wordsize = calc_word_size($os_code);
    $arch = required_loader_arch($un, $os_code, $wordsize);
    if (!is_string($arch)) {
        return $arch;
    }
    $os_variants = supported_os_variants($os_code, $arch);
    if (!is_array($os_variants)) {
        return $os_variants;
    }
    $os_ver = '';
    if (preg_match('/([0-9.]+)/', uname('r'), $match)) {
        $os_ver = $match[1];
    }
    $os_ver_parts = preg_split('@\\.@', $os_ver);
    $loader_sfix = $os_code == 'win' ? 'dll' : 'so';
    $file = "ioncube_loader_{$os_code}_{$php_major_version}.{$loader_sfix}";
    if ($os_code == 'win') {
        $os_name = 'Windows';
        $file_ts = $file;
        $os_name_qual = 'Windows';
    } else {
        $os_names = array_keys($os_variants);
        if (count($os_variants) > 1) {
            $parts = explode(" ", $os_names[0]);
            $os_name = $parts[0];
            $os_name_qual = $os_name . ' ' . $os_ver_parts[0] . '.' . $os_ver_parts[1];
        } else {
            $os_name = $os_names[0];
            $os_name_qual = $os_name;
        }
        $file_ts = "ioncube_loader_{$os_code}_{$php_major_version}_ts.{$loader_sfix}";
    }
    return array('uname' => $un, 'arch' => $arch, 'oscode' => $os_code, 'osname' => $os_name, 'osnamequal' => $os_name_qual, 'osvariants' => $os_variants, 'osver' => $os_ver, 'osver2' => $os_ver_parts, 'file' => $file, 'file_ts' => $file_ts, 'wordsize' => $wordsize);
}
예제 #2
0
function required_loader()
{
    $un = php_uname();
    $php_major_version = substr(PHP_VERSION, 0, 3);
    $os_name = substr($un, 0, strpos($un, ' '));
    $os_code = empty($os_name) ? '' : strtolower(substr($os_name, 0, 3));
    $wordsize = -1 ^ 4294967295.0 ? 64 : 32;
    if ($os_code == 'win') {
        $arch = $wordsize == 32 ? 'x86' : 'x86-64';
        if ($wordsize != 32) {
            return ERROR_WINDOWS_64_BIT;
        }
    } elseif (!empty($os_code)) {
        $arch = null;
        $arch_patterns = array('i.?86' => 'x86', 'x86[-_]64' => 'x86-64', 'x86' => 'x86', 'amd64' => 'x86-64', 'ppc64' => 'ppc64', 'ppc' => 'ppc', 'sparc' => 'sparc');
        foreach ($arch_patterns as $token => $a) {
            if (preg_match("/{$token}/i", $un)) {
                $arch = $a;
                break;
            }
        }
    }
    $os_variants = supported_os_variants($os_code, $arch);
    if (!is_array($os_variants)) {
        return $os_variants;
    }
    $os_ver = '';
    if (preg_match('/([0-9.]+)/', php_uname('r'), $match)) {
        $os_ver = $match[1];
    }
    $loader_sfix = $os_code == 'win' ? 'dll' : 'so';
    $file = "ioncube_loader_{$os_code}_{$php_major_version}.{$loader_sfix}";
    if ($os_code == 'win') {
        $os_name = 'Windows';
        $file_ts = $file;
    } else {
        $os_names = array_keys($os_variants);
        $parts = explode(" ", $os_names[0]);
        $os_name = $parts[0];
        $file_ts = "ioncube_loader_{$os_code}_{$php_major_version}_ts.{$loader_sfix}";
    }
    return array('arch' => $arch, 'oscode' => $os_code, 'osname' => $os_name, 'osvariants' => $os_variants, 'osver' => $os_ver, 'osver2' => preg_split('@\\.@', $os_ver), 'file' => $file, 'file_ts' => $file_ts, 'wordsize' => $wordsize);
}
예제 #3
0
function required_loader()
{
    $un = php_uname();
    $php_major_version = substr(PHP_VERSION,0,3);

    $os_name = substr($un,0,strpos($un,' '));
    $os_code = empty($os_name)?'':strtolower(substr($os_name,0,3));

    $wordsize = ((-1^0xffffffff) ? 64 : 32);

    $arch = required_loader_arch($un,$os_code,$wordsize);
    if (!is_string($arch)) {
        return $arch;
    }
    $os_variants = supported_os_variants($os_code,$arch);
    if (!is_array($os_variants)) {
        return $os_variants;
    }

    $os_ver = '';
    if (preg_match('/([0-9.]+)/',php_uname('r'),$match)) {
        $os_ver = $match[1];
    }

    $loader_sfix = (($os_code == 'win') ? 'dll' : 'so');
    $file = "ioncube_loader_${os_code}_${php_major_version}.${loader_sfix}";

    if ($os_code == 'win') {
        $os_name = 'Windows';
        $file_ts = $file;
    } else {
        $os_names = array_keys($os_variants);
        $parts = explode(" ",$os_names[0]); 
        $os_name = $parts[0];
        $file_ts = "ioncube_loader_${os_code}_${php_major_version}_ts.${loader_sfix}";
    }

    return array(
           'arch'       =>  $arch,
           'oscode'     =>  $os_code,
           'osname'     =>  $os_name,
           'osvariants' =>  $os_variants,
           'osver'      =>  $os_ver,
           'osver2'     =>  preg_split('@\.@',$os_ver),
           'file'       =>  $file,
           'file_ts'    =>  $file_ts,
           'wordsize'   =>  $wordsize
       );
}