JavaScript-上传代码文件时如何知道是什么操作系统?

JavaScript-上传代码文件时如何知道是什么操作系统?

清晨说ぺ晚安 发布于 2017-06-25 字数 357 浏览 1129 回复 5

我本机开发用的是winXP,
但是上传的服务器是linux,
每次上传前总是要改一下配置文件,
还有其他一些什么的,
现在通过判断当前服务器的类型来决定执行什么样的程序,
那么php如何判断所处服务器是什么类型呢

php有许多系统预定义变量,
通过判断他们可以简单的判断系统是 windows还是*unix,或者Linux
然后我去改变PHP的这些变量

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

偏爱自由 2017-10-03 5 楼

php有许多系统预定义变量,通过判断他们可以简单的判断系统是 windows还是*unix, 其中相关的函数或者预定义变量如下:
php_uname();
PHP_OS
DIRECTORY_SEPARATOR
PHP_SHLIB_SUFFIX
PATH_SEPARATOR

举个例子:

echo php_uname();
echo "<br>";

echo PHP_OS;
echo "<br>";

/* 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!';
}

虐人心 2017-09-18 4 楼

我不是很理解你的问题,你是不是想实现根据当前服务器的运行环境自动化的更改你的配置文件?
如果是这样的话,那建议你根据不同的操作系统写多个配置文件,例如:config_win.php,config_linux.php等,这样当你运行时就根据操作系统加载与当前系统相对应的配置文件,可以省去在不同平台运行频繁更改配置的烦恼。

//入口文件,index.php

 <?php
$os = strtoupper(substr(PHP_OS, 0, 3));
require('config_'.$os.'.php');
?>

晚风撩人 2017-09-14 3 楼

 function getOS()
{
global $_SERVER;
$agent=$_SERVER['HTTP_USER_AGENT']; //获取客户端信息,赋值给变量
$os=false; //初始化$os为false
if(eregi('win',$agent)&&strpos($agent,'95')) //如果结果中含有win和95内容
{
$os='Windows 95'; //操作系统为win95
}
else if(eregi('win 9x',$agent)&&strpos($agent,'4.90')) //如果结果中含有win9x与4.90
{
$os='Windows ME'; //操作系统为WinMe
}
else if(eregi('win',$agent)&&ereg('98',$agent)) //如果结果中含有win与98
{
$os='Windows 98'; //操作系统为Win98
}
else if(eregi('win',$agent)&&eregi('nt 5.1',$agent)) //如果结果含有win与nt5.1
{
$os='Windows XP'; //操作系统为WinXP
}
else if(eregi('win',$agent)&&eregi('nt 5', $agent)) //如果结果中含有win与nt5
{
$os='Windows 2000'; //操作系统为win2000
}
else if(eregi('win',$agent)&&eregi('nt',$agent)) //如果结果中含有win与nt
{
$os='Windows NT'; //操作系统为WinNT
}
else if(eregi('win',$agent)&&ereg('32',$agent)) //如果结果中含有win与32
{
$os='Windows 32'; //操作系统为Win32
}
else if(eregi('linux',$agent)) //如果结果中含有linux
{
$os='Linux'; //操作系统为Linux
}
else if(eregi('unix',$agent)) //如果结果中含有unix
{
$os='Unix'; //操作系统为Unix
}
else if(eregi('sun',$agent)&&eregi('os',$agent)) //如果结果中含有sun与os
{
$os='SunOS'; //操作系统为SunOS
}
else if(eregi('ibm',$agent)&&eregi('os',$agent)) //如果结果中含有ibm与os
{
$os='IBM OS/2'; //操作系统为IBM OS/2
}
else if(eregi('Mac',$agent)&&eregi('PC',$agent)) //如果结果中含有Mac与PC
{
$os='Macintosh'; //操作系统为Macintosh
}
else if(eregi('PowerPC',$agent)) //如果结果中含有PowerPC
{
$os='PowerPC'; //操作系统为PowerPC
}
else if(eregi('AIX',$agent)) //如果结果中含有AIX
{
$os='AIX'; //操作系统为AIX
}
else if(eregi('HPUX',$agent)) //如果结果中含有HPUX
{
$os='HPUX'; //操作系统为HPUX
}
else if(eregi('NetBSD',$agent)) //如果结果中含有NetBSD
{
$os='NetBSD'; //操作系统为NetBSD
}
else if(eregi('BSD',$agent)) //如果结果中含有BSD
{
$os='BSD'; //操作系统为BSD
}
else if(ereg('OSF1',$agent)) //如果结果中含有OSF1
{
$os='OSF1'; //操作系统为OSF1
}
else if(ereg('IRIX',$agent)) //如果结果中含有IRIX
{
$os='IRIX'; //操作系统为IRIX
}
else if(eregi('FreeBSD',$agent)) //如果结果中含有FreeBSD
{
$os='FreeBSD'; //操作系统为FreeBSD
}
else if(eregi('teleport',$agent)) //如果结果中含有teleport
{
$os='teleport'; //操作系统为teleport
}
else if(eregi('flashget',$agent)) //如果结果中含有flashget
{
$os='flashget'; //操作系统为flashget
}
else if(eregi('webzip',$agent)) //如果结果中含有webzip
{
$os='webzip'; //操作系统为webzip
}
else if(eregi('offline',$agent)) //如果结果中含有offline
{
$os='offline'; //操作系统为offline
}
else //除此之外其他情况
{
$os='Unknown'; //操作系统为未知系统
}
return $os;
}

虐人心 2017-08-30 2 楼

PHP_OS基本解决你的问题了。

甜柠檬 2017-07-19 1 楼

你说的没错,可以通过读取系统预定义变量来判断服务器的类型,如PHP_OS、DIRECTORY_SEPARATOR、PHP_SHLIB_SUFFIX、PATH_SEPARATOR等,简单的判断可以这样:

<?
if(PATH_SEPARATOR==':') echo 'Linux';
else echo 'Windows';
?>