PHP 脚本 - 确定它是否有效 linux 或者 Windows?

我有一个脚本 PHP, 可以放在系统中 windows 或系统 linux. 在任何情况下,我都需要执行不同的命令。

我如何确定我的环境? /最好是什么 PHP, 不是智能系统卡其色/

更新

阐明脚本从命令行运行。
已邀请:

快网

赞同来自:

检查值
http://php.net/manual/reserved ... hp-os
.

他会给你各种价值观 Windows, 如那个
WIN32

,
WINNT

或者
Windows

.

也可以看看:

https://coderoad.ru/738823/

http://php.net/php_uname
:


if /strtoupper/substr/PHP_OS, 0, 3// === 'WIN'/ {
echo 'This is a server using Windows!';
} else {
echo 'This is a server not using Windows!';
}

君笑尘

赞同来自:

您可以检查目录分隔符是否是
/

/为了 unix/linux/mac/ 或者
\

在 windows. 常量名称
DIRECTORY_SEPARATOR

.


if /DIRECTORY_SEPARATOR === '/'/ {
// unix, linux, mac
}

if /DIRECTORY_SEPARATOR === '\\'/ {
// windows
}

风见雨下

赞同来自:

if /strncasecmp/PHP_OS, 'WIN', 3/ == 0/ {
echo 'This is a server using Windows!';
} else {
echo 'This is a server not using Windows!';
}


看来它比接受的反应更优雅。 但是,上述了检测 DIRECTORY_SEPARATOR 这是最快的。

江南孤鹜

赞同来自:

笔记 , 什么
http://php.net/manual/en/function.php-uname.php
PHP, 什么不一定是一样的 OS, 它目前工作。

如果你正在进行中 PHP >= 5.3 而且你只需要知道你是否工作 Windows 或者没有窗口,然后检查一个吗?
http://php.net/manual/en/info.constants.php
, 可能是一个良好的选择,例如:


$windows = defined/'PHP_WINDOWS_VERSION_MAJOR'/;

涵秋

赞同来自:

功能
http://php.net/manual/en/function.php-uname.php
可用于检测它。


echo php_uname//;

江南孤鹜

赞同来自:

依据
http://nl3.php.net/manual/en/r ... 13172
Volker'S 和 rdcapasso solution, 您可以简单地创建辅助类,如下所示:


php

class System {

const OS_UNKNOWN = 1;
const OS_WIN = 2;
const OS_LINUX = 3;
const OS_OSX = 4;

/**
* @return int
*/
static public function getOS// {
switch /true/ {
case stristr/PHP_OS, 'DAR'/: return self::OS_OSX;
case stristr/PHP_OS, 'WIN'/: return self::OS_WIN;
case stristr/PHP_OS, 'LINUX'/: return self::OS_LINUX;
default : return self::OS_UNKNOWN;
}
}

}


使用

:


if/System::getOS// == System::OS_WIN/ {
// do something only on Windows platform
}


</div
<div class="answer_text">
它应该工作 PHP 4.3+:


if /strtolower/PHP_SHLIB_SUFFIX/ === 'dll'/
{
// Windows
}
else
{
// Linux/UNIX/OS X
}


</div>
<div class="answer_text">
以。。。开始 PHP 7.2.0, 你可以检测一个工作 O.S. 使用常数
PHP_OS_FAMILY

:


if /PHP_OS_FAMILY === "Windows"/ {
echo "Running on Windows";
} elseif /PHP_OS_FAMILY === "Linux"/ {
echo "Running on Linux";
}


厘米。
https://www.php.net/manual/res ... amily
PHP 为其可能的值。
</div>
<div class="answer_text">
主要预定义常量:

http://us3.php.net/manual/en/r ... s.php
有永久性的
PHP_OS /string/

.

或者如果你想检测到 OS 客户:


<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";

$browser = get_browser/null, true/;
print_r/$browser/;
?>


From
http://us3.php.net/manual/en/f ... r.php
按照您的编辑,您可以参考此复制。 PHP
https://coderoad.ru/626416/
您可以使用


string php_uname /[ string $mode = "a" ] /


所以


php_uname/"s"/


's': 操作系统的名称。
FreeBSD.

它会为你做一个伎俩,在这里看到
http://php.net/manual/en/function.php-uname.php
</div>
<div class="answer_text">
确定是否是 Windows, OS X 或者 Linux:


if /stripos/PHP_OS, 'win'/ === 0/ {
// code for windows
} elseif /stripos/PHP_OS, 'darwin'/ === 0/ {
// code for OS X
} elseif /stripos/PHP_OS, 'linux'/ === 0/ {
// code for Linux
}



stripos

比慢于
substr

在这个特殊的情况下,这对于这么小的任务和更优雅来说非常有效。
</div>
<div class="answer_text">
您可以检查是否存在常量 PHP &gt;5.3.0 /
http://php.net/manual/en/info.constants.php
/


if /defined/'PHP_WINDOWS_VERSION_BUILD'// {
// is Windows
}


以前,使用该方法 Symfony. 现在他们使用
https://github.com/symfony/sym ... b554c
:


if /'\\' === DIRECTORY_SEPARATOR/ {
// is Windows
}


</div>
<div class="answer_text">
如果您想检查它是否有效 Linux, 只需检查它是否有效
/PHP_OS === 'Linux'/

. 无需使用 strtolower// 和 substr//.
</div>
<div class="answer_text">

function isWin//{
if /strtolower/substr/PHP_OS, 0, 3// === 'win' || PHP_SHLIB_SUFFIX == 'dll' || PATH_SEPARATOR == ';'/ {
return true;
} else {
return false;
}
}


</div>
<div class="answer_text">
经过
http://www.php.net/manual/en/r ... 02162
:


<?php
echo '<table border="1">';

foreach /$_SERVER as $k =&gt; $v/{
echo "<tr><td>" . $k ."</td><td>" . $v . "</td></tr>";
}

echo ""
?&gt;


这是全部大量的 $_SERVER... 如所知) ArtWorkAD, 使用钥匙 HTTP_USER_AGENT, 你可以删除 OS 更清楚。
</div>

八刀丁二

赞同来自:

它应该工作 PHP 4.3+:


if /strtolower/PHP_SHLIB_SUFFIX/ === 'dll'/
{
// Windows
}
else
{
// Linux/UNIX/OS X
}

小姐请别说爱

赞同来自:

以。。。开始 PHP 7.2.0, 你可以检测一个工作 O.S. 使用常数
PHP_OS_FAMILY

:


if /PHP_OS_FAMILY === "Windows"/ {
echo "Running on Windows";
} elseif /PHP_OS_FAMILY === "Linux"/ {
echo "Running on Linux";
}


厘米。
https://www.php.net/manual/res ... amily
PHP 为其可能的值。

快网

赞同来自:

主要预定义常量:

http://us3.php.net/manual/en/r ... s.php
有永久性的
PHP_OS /string/

.

或者如果你想检测到 OS 客户:


php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";

$browser = get_browser/null, true/;
print_r/$browser/;
?


From
http://us3.php.net/manual/en/f ... r.php
按照您的编辑,您可以参考此复制。 PHP
https://coderoad.ru/626416/
您可以使用


string php_uname /[ string $mode = "a" ] /


所以


php_uname/"s"/


's': 操作系统的名称。
FreeBSD.

它会为你做一个伎俩,在这里看到
http://php.net/manual/en/function.php-uname.php

风见雨下

赞同来自:

确定是否是 Windows, OS X 或者 Linux:


if /stripos/PHP_OS, 'win'/ === 0/ {
// code for windows
} elseif /stripos/PHP_OS, 'darwin'/ === 0/ {
// code for OS X
} elseif /stripos/PHP_OS, 'linux'/ === 0/ {
// code for Linux
}



stripos

比慢于
substr

在这个特殊的情况下,这对于这么小的任务和更优雅来说非常有效。

裸奔

赞同来自:

您可以检查是否存在常量 PHP >5.3.0 /
http://php.net/manual/en/info.constants.php
/


if /defined/'PHP_WINDOWS_VERSION_BUILD'// {
// is Windows
}


以前,使用该方法 Symfony. 现在他们使用
https://github.com/symfony/sym ... b554c
:


if /'\\' === DIRECTORY_SEPARATOR/ {
// is Windows
}

诸葛浮云

赞同来自:

如果您想检查它是否有效 Linux, 只需检查它是否有效
/PHP_OS === 'Linux'/

. 无需使用 strtolower// 和 substr//.

帅驴

赞同来自:

function isWin//{
if /strtolower/substr/PHP_OS, 0, 3// === 'win' || PHP_SHLIB_SUFFIX == 'dll' || PATH_SEPARATOR == ';'/ {
return true;
} else {
return false;
}
}

小明明

赞同来自:

经过
http://www.php.net/manual/en/r ... 02162
:


php
echo '<table border="1"';

foreach /$_SERVER as $k => $v/{
echo "<tr><td>" . $k ."</td><td>" . $v . "</td></tr>";
}

echo ""
?>


这是全部大量的 $_SERVER... 如所知) ArtWorkAD, 使用钥匙 HTTP_USER_AGENT, 你可以删除 OS 更清楚。

要回复问题请先登录注册