2010-10-16 70 views
3

我需要确定运行PHP服务器的操作系统类型。 类型,我的意思是像“windows”或“linux”,而不是“wince”,“winnt”等字符串。准确确定PHP运行的操作系统类型

到目前为止,我必须带领:PHP_OS和uname(),后者比早些时候(PHP_OS说什么操作系统的PHP是建立在 - 根据文件)。

+0

'php_uname()'不符合您的要求吗?如果不是,为什么不呢? – 2010-10-16 10:49:32

+1

我需要操作系统类型,但php_uname返回了很多额外的细节,这使得检测很难(例如:winnt vs wince vs darwin => windows windows osx)。另外,我也没有(不能)知道我可以得到的所有类型的字符串。例如,我不运行solaris或bsd - 在这一点上,不可能在这些系统上运行我自己的php。 – Christian 2010-10-16 10:52:30

+0

@Christian这似乎是看起来很容易的事情之一,但同时不可能100%可靠地做到。小心详细说明你需要什么?也许这导致了一个完美的指标 – 2010-10-16 11:28:52

回答

8

重要的是要知道,非Windows操作系统字符串不会包含文本“win”,并且没有非OSX OS字符串将包含单词“darwin”,依此类推。检测操作系统很简单。

$uname = strtolower(php_uname()); 
if (strpos($uname, "darwin") !== false) { 
    // It's OSX 
} else if (strpos($uname, "win") !== false) { 
    // It's windows 
} else if (strpos($uname, "linux") !== false) { 
    // It's Linux 
} else { 
    // It's something your script won't run on 
} 
+0

它将OSX检测为windows ;-)。我已经得到了这个代码,但正如我所说的那样,它不可靠。 – Christian 2010-10-16 11:31:23

+0

现在我不叫你骗子或疯了,但这听起来不可能!哈哈 – mellowsoon 2010-10-16 11:35:25

+3

P.S.注意if语句的顺序。如果您首先检查OSX,它将抓住“达尔文”中的“胜利”。 – mellowsoon 2010-10-16 11:36:14