如何獲得運行PHP的操作系統?




operating-system (6)

為了構建一個unix / dos特定的腳本,我需要知道我是哪種操作系統。

我如何獲得這些信息?
phpinfo(); 告訴我更多,不清楚我是否在unix上運行。



PHP不提供任何獲取分發名稱的函數, php_uname類似於Linux命令uname ,不提供有關分發本身的任何信息。

php_unamePHP_OS都沒有提供足夠的信息。 關於分發但是OS類型(例如Linux / Windows)。

我認為了解運行的操作系統/發行版的最佳方法是閱讀/etc/os-release ,好處是這個文件對所有系統用戶都有讀權限,不好的是它可能無法在共享主機上運行。

在這裡,我寫了一個非常簡單的PHP函數,它讀取並將os-release轉換為數組:

    function getOSInformation()
    {
        if (false == function_exists("shell_exec") || false == is_readable("/etc/os-release")) {
            return null;
        }

        $os         = shell_exec('cat /etc/os-release');
        $listIds    = preg_match_all('/.*=/', $os, $matchListIds);
        $listIds    = $matchListIds[0];

        $listVal    = preg_match_all('/=.*/', $os, $matchListVal);
        $listVal    = $matchListVal[0];

        array_walk($listIds, function(&$v, $k){
            $v = strtolower(str_replace('=', '', $v));
        });

        array_walk($listVal, function(&$v, $k){
            $v = preg_replace('/=|"/', '', $v);
        });

        return array_combine($listIds, $listVal);
    }

此函數打印如下:

Array
(
    [name] => Ubuntu
    [version] => 16.04.2 LTS (Xenial Xerus)
    [id] => ubuntu
    [id_like] => debian
    [pretty_name] => Ubuntu 16.04.2 LTS
    [version_id] => 16.04
    [home_url] => http://www.ubuntu.com/
    [support_url] => http://help.ubuntu.com/
    [bug_report_url] => http://bugs.launchpad.net/ubuntu/
    [version_codename] => xenial
    [ubuntu_codename] => xenial
)

舉行og lykke [1] ;-)

[1]丹麥語意味著好運。



PHP 7.2.0開始,我們有一個新的預定義常量來獲取操作系統系列,即PHP_OS_FAMILY 。 它返回一個字符串 'Windows','BSD','OSX','Solaris','Linux'或'Unknown'。


請記住, PHP_OS實際上包含構建PHP的平台。 這可能與部署它的平台不同。 因此php_uname('s')更可靠。


#!/usr/bin/env php
<?php
$platform = DIRECTORY_SEPARATOR === '\\'
    ? 'Windows'
    : 'Unix/Linux';

我知道這不是非常精細,但它可能足以在Win和* nix系統之間進行簡單的識別。 因人而異





operating-system