Mar*_*sch 49 php operating-system
为了构建一个unix/dos特定的脚本,我需要知道我是哪种操作系统.
我如何获得这些信息?
phpinfo();告诉我更多,不清楚我是否在unix上运行.
Pas*_*TIN 95
PHP有许多预定义的常量,通常很有用.
在这里,PHP_OS是您正在寻找的那个.
例如,在我当前的机器上,这段代码:
var_dump(PHP_OS);
Run Code Online (Sandbox Code Playgroud)
给:
string 'Linux' (length=5)
Run Code Online (Sandbox Code Playgroud)
你有一些例子和比较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!';
}
Run Code Online (Sandbox Code Playgroud)
该页面还说:
对于仅操作系统的名称,请考虑使用
PHP_OS常量,但请记住,此常量将包含PHP 构建的操作系统.
spi*_*yjt 31
请记住,PHP_OS实际上包含构建PHP的平台.这可能与部署它的平台不同.因此php_uname('s')更可靠.
从PHP 7.2.0开始,我们有一个新的预定义常量来获取操作系统系列,即PHP_OS_FAMILY.它返回一个字符串 'Windows','BSD','OSX','Solaris','Linux'或'Unknown'.
PHP 不提供任何获取发行版名称的函数,php_uname类似于 Linux 命令uname,不提供有关发行版本身的任何信息。
既没有php_uname也没有PHP_OS提供足够的信息。关于发行版,但与操作系统类型有关(例如 Linux / Windows)。
我认为了解正在运行的操作系统/发行版是什么的最好方法是 read /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);
}
Run Code Online (Sandbox Code Playgroud)
此函数打印如下内容:
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
)
Run Code Online (Sandbox Code Playgroud)
举行 og lykke [1] ;-)
[1] 丹麦语意为好运。