回答
PHP有很多predefined constants這往往是有用的。
在這裏,PHP_OS
是你正在尋找的。
舉例來說,我現在的機器上,此代碼:
var_dump(PHP_OS);
給出:
string 'Linux' (length=5)
你有一些實例和比較有什麼功能可以得到你在manual page of 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是內置上。
PHP_OS被prefined與主機操作系統名稱:http://us2.php.net/manual/en/reserved.constants.php
請記住,PHP_OS
實際上包含構建PHP的平臺。這可能與其部署的平臺不同。因此php_uname('s')
更可靠。
'在Windows 7上的php_uname('s')'返回「Windows NT」,所以我不知道它有多可靠:)我猜可以爭論Win 7基於NT但仍... – 2013-12-31 05:53:59
Windows 7絕對是Windows NT(版本6.1)。 Vista是Windows NT 6,XP是NT 5.1,2000是NT 5.所以是的,它是可靠的!檢查[這裏](http://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions)以供參考。在cmd提示符處鍵入'ver'以查看Win OS的版本號。 – spikyjt 2014-01-06 00:28:05
這對我來說似乎是正確的答案。接受的答案是錯誤的,並且不回答OP的問題。 – 2016-04-21 21:51:31
有兩種不同的方式來檢查您的PHP運行在其上的平臺。
- 使用
PHP_OS
這是一個常量,將指向你的PHP始建於它的「操作 系統名稱」。 - 使用PHP內置函數
php_uname()
,將告訴你有關平臺的更多 (操作系統名稱,主機名,版本 信息,釋名,機器類型)你的腳本運行就可以了 。
$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);
PHP不提供任何功能,以獲得分配的名稱,類似於Linux命令uname
,這意味着它不提供有關分佈本身的任何信息。
也沒有PHP_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」或「未知」中的任一個。
在PHP 7.2.0你可以使用PHP_OS_FAMILY
常數:
在其他PHP版本,你可以使用:
/**
* return DOS OR UNIX
*/
function familyOS() {
return (stripos(PHP_OS, "WIN") === 0)? "DOS" : "UNIX";
}
- 1. 如何獲得計算機運行java的操作系統?
- 2. 如何操作系統...運行...沒有一個操作系統運行?
- 3. 如何獲得操作系統名稱
- 4. 如何從Request.UserAgent獲得操作系統?
- 5. C#如何獲得操作系統體系結構(x86或x64)?
- 6. 運行操作系統命令的JSP
- 7. 如何獲得Firefox上的MSISDN操作系統
- 8. 如何獲得操作系統的語言名稱
- 9. 如何在c#中獲得真正的操作系統版本?
- 10. 如何獲得人類可讀的Android操作系統版本
- 11. 通緝:所有在Raspberry Pi上運行的操作系統操作系統?
- 12. 準確確定PHP運行的操作系統類型
- 13. 如何找出用戶正在運行的操作系統?
- 14. 如何找出我在Emacs中運行的操作系統?
- 15. 如何檢測正在運行的操作系統?
- 16. 簡單的操作系統如何運行progam loader?
- 17. 如何檢測用戶正在運行的操作系統?
- 18. 如何在Java中獲得操作系統
- 19. 如何獲得「友好」操作系統版本名稱?
- 20. 如何獲得操作系統版本asp.net
- 21. 如何在自制操作系統中獲得鍵盤輸入?
- 22. 操作系統和操作系統如何更新自己?
- 23. 如何獲取系統日誌形式4.3 android操作系統
- 24. 如何獲取使用C#運行代碼的操作系統的名稱?
- 25. 如何從操作系統的命令行獲取MATLAB的prefdir?
- 26. 如何是操作系統
- 27. 我如何獲得Linux系統的正常運行?
- 28. 如何獲得命令的系統運行()狀態
- 29. 如何在運行時獲得ruby系統()調用的STDOUT?
- 30. 如何在系統運行時獲得真正的CPU頻率?
怎麼能PHP_OS以往「相當合作好「,如果它給你的操作系統PHP建立在?它遲早會被打破。 – Pacerier 2014-12-12 11:32:26