2010-10-16 35 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

相關問題