如何获得运行PHP的操作系统?

为了构build一个unix / dos特定的脚本,我需要知道我是哪一种操作系统。

我如何获得这些信息?
phpinfo(); 告诉我更多,不清楚我是否在unix上运行。

PHP有许多预定义常量 ,通常很有用。

在这里, PHP_OS是你正在寻找的。

例如,在我目前的机器上,这个代码:

 var_dump(PHP_OS); 

给:

 string 'Linux' (length=5) 

你有一些例子,并与php_uname函数可以在php_uname的手册页上获得的内容进行php_uname ; 例如(引用)

 <?php echo php_uname(); echo PHP_OS; /* Some possible outputs: Linux localhost 2.4.21-0.13mdk #1 Fri Mar 14 15:08:06 EST 2003 i686 Linux FreeBSD localhost 3.2-RELEASE #15: Mon Dec 17 08:46:02 GMT 2001 FreeBSD Windows NT XN1 5.1 build 2600 WINNT */ if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { echo 'This is a server using Windows!'; } else { echo 'This is a server not using Windows!'; } 

该页面还说:

对于操作系统的名称,可以考虑使用PHP_OS常量,但要记住这个常量将包含PHP 构build的操作系统。

请记住, PHP_OS实际上包含了构buildPHP的平台。 这可能与其部署的平台不同。 所以php_uname('s')更可靠。

使用主机操作系统名称预先定义了PHP_OS: http ://us2.php.net/manual/en/reserved.constants.php

有两种不同的方法来检查您的PHP正在运行的平台。

  1. 使用PHP_OS这是一个常量,并将指向您的PHP内置的“操作系统名称”。
  2. 使用内置函数php_uname()可以告诉你更多关于你的脚本在其上运行的平台(操作系统名称,主机名称,版本信息,发布名称,机器types)的信息。

PHP不提供任何函数来获取分配的名称, php_uname类似于Linux命令uname ,这意味着它不提供有关分配本身的任何信息。

php_unamePHP_OS都不提供信息。 关于分配,但操作系统types(如Linux / Windows)。

我认为知道什么OS /发行版运行的最好方法是读取/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] 😉

丹麦语表示祝好运。

PHP 7.2.0开始,我们有一个新的预定义常量来获得操作系统系列,即PHP_OS_FAMILY 。 它返回一个string “Windows”,“BSD”,“OSX”,“Solaris”,“Linux”或“Unknown”。

在PHP 7.2.0上,你可以使用PHP_OS_FAMILY常量:

在其他PHP版本中,您可以使用:

 /** * return DOS OR UNIX */ function familyOS() { return (stripos(PHP_OS, "WIN") === 0)? "DOS" : "UNIX"; } 
 $user_agent = $_SERVER['HTTP_USER_AGENT']; function getOS() { global $user_agent; $os_platform = "Unknown OS Platform"; $os_array = array( '/windows nt 6.2/i' => 'Windows 8', '/windows nt 6.1/i' => 'Windows 7', '/windows nt 6.0/i' => 'Windows Vista', '/windows nt 5.2/i' => 'Windows Server 2003/XP x64', '/windows nt 5.1/i' => 'Windows XP', '/windows xp/i' => 'Windows XP', '/windows nt 5.0/i' => 'Windows 2000', '/windows me/i' => 'Windows ME', '/win98/i' => 'Windows 98', '/win95/i' => 'Windows 95', '/win16/i' => 'Windows 3.11', '/macintosh|mac os x/i' => 'Mac OS X', '/mac_powerpc/i' => 'Mac OS 9', '/linux/i' => 'Linux', '/ubuntu/i' => 'Ubuntu', '/iphone/i' => 'iPhone', '/ipod/i' => 'iPod', '/ipad/i' => 'iPad', '/android/i' => 'Android', '/blackberry/i' => 'BlackBerry', '/webos/i' => 'Mobile' ); foreach ($os_array as $regex => $value) { if (preg_match($regex, $user_agent)) { $os_platform = $value; } } return $os_platform; } $user_os = getOS(); $device_details = "<strong>Operating System: </strong>".$user_os.""; print_r($device_details);