Найти Windows 32 или 64 бит с помощью PHP

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

<?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.

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

  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; } 

Если у вас установлено COM расширение (в php.ini), вы можете вызвать службу WMI Windows.

(Помните, хотя это событие, если у вас 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"; } 

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

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

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

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

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