使用PHP查找Windows 32或64位

时间:2011-06-10 07:27:37

标签: php windows

是否有可能让窗口处理器位? 我想用php找到窗口处理器位? 我有编码来查找操作系统和其他属性。 好心劝告。 谢谢 - Haan的

7 个答案:

答案 0 :(得分:35)

<?php
switch(PHP_INT_SIZE) {
    case 4:
        echo '32-bit version of PHP';
        break;
    case 8:
        echo '64-bit version of PHP';
        break;
    default:
        echo 'PHP_INT_SIZE is ' . PHP_INT_SIZE;
}

此代码段至少会告诉您是否正在运行32/64位版本的PHP。

答案 1 :(得分:6)

获得位数的稍微更短且更健壮的方法。

    strlen(decbin(~0));

这是如何运作的:

按位补码运算符,波浪号,,翻转每一位。

@see http://php.net/manual/en/language.operators.bitwise.php

0 上使用此功能可在每个位上切换整数。

这为您提供了PHP安装可以处理的最大数量。

然后使用decbin()将以二进制形式

为您提供此数字的字符串表示形式

@see http://php.net/manual/en/function.decbin.php

并且strlen将为您提供位数。

这是一个可用的功能

function is64Bits() {
    return strlen(decbin(~0)) == 64;
}

答案 2 :(得分:2)

如果你安装了COM扩展名(在php.ini中),你可以调用windows WMI服务。

(请记住,如果你有64位处理器,64位操作系统和64位PHP,那么你的整数仍然是32位,因为x64-PHP有限制Windows。)

总之...

检查操作系统:

function getOsArchitecture() {
    $wmi = new COM('winmgmts:{impersonationLevel=impersonate}//./root/cimv2');
    $wmi = $obj->ExecQuery('SELECT * FROM Win32_OperatingSystem');
    if (!is_object($wmi)) {
        throw new Exception('No access to WMI. Please enable DCOM in php.ini and allow the current user to access the WMI DCOM object.');
    }
    foreach($wmi as $os) {
        return $os->OSArchitecture;
    }
    return "Unknown";
}

或者,检查物理处理器:

function getProcessorArchitecture() {
    $wmi = new COM('winmgmts:{impersonationLevel=impersonate}//./root/cimv2');

    if (!is_object($wmi)) {
        throw new Exception('No access to WMI. Please enable DCOM in php.ini and allow the current user to access the WMI DCOM object.');
    }
    foreach($wmi->ExecQuery("SELECT Architecture FROM Win32_Processor") as $cpu) {
        # only need to check the first one (if there is more than one cpu at all)
        switch($cpu->Architecture) {
            case 0:
                return "x86";
            case 1:
                return "MIPS";
            case 2:
                return "Alpha";
            case 3:
                return "PowerPC";
            case 6:
                return "Itanium-based system";
            case 9:
                return "x64";
        }
    }
    return "Unknown";
}

答案 3 :(得分:1)

你可以写一个这样的函数:

function is_32bit(){
  return PHP_INT_SIZE === 4;
}

然后你可以像这样使用它:

if( is_32bit() ) {
    // do 32 bit stuffs
}

答案 4 :(得分:0)

function bits() {
  return PHP_INT_SIZE * 8;
}

echo 'Php running on '.bits(). ' bits system';

答案 5 :(得分:0)

另一种选择:

function IsAtLeast64Bit()
{
    return defined('PHP_INT_SIZE') && PHP_INT_SIZE >= 8;
}

如果定义了 PHP_INT_SIZE,它只返回 TRUE。这应该适用于所有 64 位系统。超过 64 位的未来系统也会被管理。

答案 6 :(得分:-2)

<?php echo $_SERVER['HTTP_USER_AGENT']; ?>
它包含在变量中,你可以将其爆炸并从

派生出来