如果PHP在Linux上运行;如何获得具体的分发(Ubuntu,fedora等)?
发布时间:2020-12-13 21:47:52 所属栏目:PHP教程 来源:网络整理
导读:我有一个与OS的CLI交互的 PHP脚本,我希望这个脚本可以在不同的Linux发行版上运行,所以我必须以不同的方式与不同的Linux falvours进行交互以实现某些功能,但我找不到PHP的方法区分它们. 我尝试过使用php_uname(‘s’)和PHP_OS它们都返回Linux;这对我没什么用(
我有一个与OS的CLI交互的
PHP脚本,我希望这个脚本可以在不同的Linux发行版上运行,所以我必须以不同的方式与不同的Linux falvours进行交互以实现某些功能,但我找不到PHP的方法区分它们.
我尝试过使用php_uname(‘s’)和PHP_OS它们都返回Linux;这对我没什么用(我在Arch Linux上测试) 我问这个问题,因为 – 例如 – 如果我想在Ubuntu中管理服务/守护进程,我将使用service命令,并且在Arch中使用systemctl命令,所以不知道哪个Linux发行版正在运行我的PHP脚本我无法处理这些问题. 解决方法
我找到了解决这个问题的灵活方案.这是通过查找/ etc目录中的发布文件(而不是打印实际上在文件中的内容),所以如果我在Arch Linux上运行这个脚本,它将检查/ etc目录中的arch-release文件等等其他Linux发行版.
这是代码: 重要笔记: >如果你不修改php.ini文件并允许对它进行文件操作,PHP将不会扫描/ etc目录(修改open_basedir选项,通过添加:/ etc /到最后.) function getLinuxDistro() { //declare Linux distros(extensible list). $distros = array( "Arch" => "arch-release","Debian" => "debian_version","Fedora" => "fedora-release","Ubuntu" => "lsb-release",'Redhat' => 'redhat-release','CentOS' => 'centos-release'); //Get everything from /etc directory. $etcList = scandir('/etc'); //Loop through /etc results... $OSDistro; foreach ($etcList as $entry) { //Loop through list of distros.. foreach ($distros as $distroReleaseFile) { //Match was found. if ($distroReleaseFile === $entry) { //Find distros array key(i.e. Distro name) by value(i.e. distro release file) $OSDistro = array_search($distroReleaseFile,$distros); break 2;//Break inner and outer loop. } } } return $OSDistro; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |