Может ли PHP сказать, является ли сервер ОС 64-битным? - PullRequest
24 голосов
/ 01 марта 2010

Я имею дело с Windows здесь.

Я знаю, что вы можете использовать переменную $_SERVER['HTTP_USER_AGENT'] для определения ОС браузера, просматривающего страницу, но есть ли способ, которым PHP может обнаружить ОС сервера?

Для пользовательского интерфейса моей программы я использую веб-страницу PHP. Мне нужно прочитать ключ в реестре, который находится в другом месте на 64-разрядной ОС (он находится под ключом Wow6432Node).

Может ли PHP сказать, на какой ОС он работает? Может ли PHP определить, является ли ОС 64-битной или 32-битной?

Ответы [ 12 ]

0 голосов
/ 08 августа 2014

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

Для проверки ОС:

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";
}
0 голосов
/ 13 мая 2011

Немного поздний ответ, но если вы просто хотите определить размер слова, вы можете использовать это: (log(PHP_INT_MAX + 1, 2) + 1)

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