Найти Windows 32 или 64 бит, используя PHP - PullRequest
14 голосов
/ 10 июня 2011

Возможно ли получить бит оконного процессора ??Я хочу найти оконный процессор с помощью php ??У меня есть код, чтобы найти операционную систему и другие свойства.Добрый совет.Спасибо - Хаан

Ответы [ 6 ]

37 голосов
/ 10 июня 2011
<?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.

6 голосов
/ 26 ноября 2016

Немного более короткий и надежный способ получения количества бит.

    strlen(decbin(~0));

Как это работает:

Оператор побитового дополнения, тильда, ~ , переворачивает каждый бит.

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

Использование этого параметра на 0 включает каждый бит для целого числа.

Это дает вам наибольшее число, которое может обработать ваша установка PHP.

Тогда использование decbin () даст вам строковое представление этого числа в двоичной форме

@см. http://php.net/manual/en/function.decbin.php

и strlen подсчитает количество бит.

Вот оно в полезной функции

function is64Bits() {
    return strlen(decbin(~0)) == 64;
}
2 голосов
/ 08 августа 2014

Если у вас установлено расширение 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";
}
1 голос
/ 30 марта 2016

Вы можете написать такую ​​функцию:

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

Тогда вы можете использовать это так:

if( is_32bit() ) {
    // do 32 bit stuffs
}
0 голосов
/ 08 июня 2018
function bits() {
  return PHP_INT_SIZE * 8;
}

echo 'Php running on '.bits(). ' bits system';
0 голосов
/ 10 июня 2011

<?php echo $_SERVER['HTTP_USER_AGENT']; ?>
содержится в переменной, вы можете взорвать это и получить из этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...