有没有办法找出哪个版本的Ubuntu安装与PHP?如何找出用php安装的linux发行版?
在控制台上我会用
cat /etc/lsb-release
,并会得到例如:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.10
DISTRIB_CODENAME=saucy
DISTRIB_DESCRIPTION="Ubuntu 13.10"
有没有办法找出哪个版本的Ubuntu安装与PHP?如何找出用php安装的linux发行版?
在控制台上我会用
cat /etc/lsb-release
,并会得到例如:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.10
DISTRIB_CODENAME=saucy
DISTRIB_DESCRIPTION="Ubuntu 13.10"
这将收集了很多有用的数据:
function get_release_info(){
if(!$r = @parse_ini_file("/etc/lsb-release")){
if(!$r = @parse_ini_file("/etc/os-release")){
$r = @parse_ini_file("/etc/redhat-release");
}
}
/*for ex:
$r["DISTRIB_ID"]=Ubuntu
$r["DISTRIB_RELEASE"]=13.10
$r["DISTRIB_CODENAME"]=saucy
$r["DISTRIB_DESCRIPTION"]="Ubuntu 13.10"
*/
$r["debian_version"]=trim(@file_get_contents("/etc/debian_version")); // for ex. "wheezy/sid"
$r["PHP_OS"]=PHP_OS;
$r["SERVER_SOFTWARE"][email protected]$_SERVER["SERVER_SOFTWARE"];
$r["osx_system_arch"][email protected]$_SERVER["_system_arch"];// Mac-specific for ex.=> x86_64
$r["osx_system_version"][email protected]$_SERVER["_system_version"];// Mac-specific for ex.=> 10.9
/**
'a': This is the default. Contains all modes in the sequence "s n r v m".
's': Operating system name. eg. FreeBSD.
'n': Host name. eg. localhost.example.com.
'r': Release name. eg. 5.1.2-RELEASE.
'v': Version information. Varies a lot between operating systems.
'm': Machine type. eg. i386.
*/
$r["kernel_release_name"]=php_uname('r');
$r["os_name"]=php_uname('s');
$r["uname_version_info"]=php_uname('v');
$r["machine_type"]=php_uname('m');
$r["php_uname"]=php_uname();
if(stristr($r["uname_version_info"],"Ubuntu")){
// source: http://wiki.ubuntuusers.de/Kernel/Linux-Versionsnummern#Versionsnummern-herausfinden
$distribution["4.10"]=array("Warty Warthog", "2.6.8");
$distribution["5.04"]=array("Hoary Hedgehog", "2.6.10");
$distribution["5.10"]=array("Breezy Badger", "2.6.12");
$distribution["6.06"]=array("Dapper Drake", "2.6.15");
$distribution["6.10"]=array("Edgy Eft", "2.6.17");
$distribution["7.04"]=array("Feisty Fawn", "2.6.20");
$distribution["7.10"]=array("Gutsy Gibbon", "2.6.22");
$distribution["8.04"]=array("Hardy Heron", "2.6.24");
$distribution["8.10"]=array("Intrepid Ibex", "2.6.27");
$distribution["9.04"]=array("Jaunty Jackalope", "2.6.28");
$distribution["9.10"]=array("Karmic Koala", "2.6.31");
$distribution["10.04"]=array("Lucid Lynx", "2.6.32");
$distribution["10.10"]=array("Maverick Meerkat", "2.6.35");
$distribution["11.04"]=array("Natty Narwhal", "2.6.38");
$distribution["11.10"]=array("Oneiric Ocelot", "3.0");
$distribution["12.04"]=array("Precise Pangolin", "3.2"); #Backports: 3.5, 3.8, 3.11, 3.13
$distribution["12.10"]=array("Quantal Quetzal", "3.5");
$distribution["13.04"]=array("Raring Ringtail", "3.8");
$distribution["13.10"]=array("Saucy Salamander", "3.11");
$distribution["14.04"]=array("Trusty Tahr", "3.13"); # Backports 3.16, 3.19
$distribution["14.10"]=array("Utopic Unicorn", "3.16");
$distribution["15.04"]=array("Vivid Vervet", "3.19");
$distribution["15.10"]=array("Wily Werewolf", "4.2");
$distribution["16.04"]=array("Xenial Xerus", "4.4");
foreach($distribution as $distribution=>$name_kernel){
list($name,$kernel)=$name_kernel;
if(version_compare($r["kernel_release_name"],$kernel,'>=')) {
$r["ubuntu_distribution_by_kernel"]=$distribution;
$r["ubuntu_distribution_name_by_kernel"]=$name;
$r["ubuntu_distribution_shortname_by_kernel"]=strtolower(preg_replace("/ .*$/","", $name));
}
}
if(empty($r["DISTRIB_RELEASE"]) and !empty($r["ubuntu_distribution_by_kernel"])) {
$r["DISTRIB_RELEASE"]=$r["ubuntu_distribution_by_kernel"];
$r["DISTRIB_DESCRIPTION"]="Ubuntu ".$r["ubuntu_distribution_by_kernel"];
$r["DISTRIB_CODENAME"]=$r["ubuntu_distribution_shortname_by_kernel"];
}
}
return $r;
}
的$ _ SERVER []可以提供帮助。
我的Mac上我有
$_SERVER["_system_arch"] => x86_64
$_SERVER["_system_version"] => 10.9
我会推荐阅读在/ etc/LSB释放的文件。
你可以找到更多信息here
你可以分析/ etc/LSB释放的信息。
<?php
$release_info = parse_ini_file("/etc/lsb-release");
echo $release_info["DISTRIB_ID"];
echo $release_info["DISTRIB_RELEASE"];
echo $release_info["DISTRIB_DESCRIPTION"];
?>
只要没有open_basedir限制,就比'php_uname'更好。 – Mike
所以,你想要写一个PHP代码片段,报告它的运行机器的操作系统的详细信息?我有没有得到那个权利? –
这是完美的 – rubo77
另请参阅http://stackoverflow.com/questions/1482260/how-to-get-the-os-on-which-php-is-running。我不确定它是否会向你显示确切的Ubuntu版本,但你可以根据内核版本('php_uname('r');')来判断它。 – Mike