PHP 스크립트 - linux 또는 Windows에서 실행 중 어느 쪽을 검출합니까?
Windows 시스템 또는 Linux 시스템에 배치할 수 있는 PHP 스크립트를 가지고 있습니다.어느 경우든 다른 명령을 실행해야 합니다.
내가 어떤 환경에 있는지 어떻게 검출할 수 있습니까? (적절한 시스템 해킹보다는 PHP를 사용하는 것이 바람직합니다.)
갱신하다
명확하게 하기 위해 스크립트는 명령줄에서 실행되고 있습니다.
상수문서 값을 확인합니다.
Windows 에서는, 다음과 같은 다양한 가치를 얻을 수 있습니다.WIN32
,WINNT
또는Windows
.
"PHP_OS 및 다음 항목에 대한 가능한 값"도 참조하십시오.
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의 경우) 또는\
창문에 붙입니다.상수 이름은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!';
}
인정받는 대답보다 좀 더 우아한 것 같아요.다만, DIRECTOR_SEPARATOR 를 사용한 검출이 가장 빠릅니다.
PHP 7.2.0부터는 상수를 사용하여 실행 중인 OS를 검출할 수 있습니다.PHP_OS_FAMILY
:
if (PHP_OS_FAMILY === "Windows") {
echo "Running on Windows";
} elseif (PHP_OS_FAMILY === "Linux") {
echo "Running on Linux";
}
PHP_OS는 PHP가 구축되어 있는 OS를 보고합니다.이 OS는 현재 실행되고 있는 OS와 반드시 동일할 필요는 없습니다.
PHP > = 5.3을 사용 중이며 Windows에서 실행 중인지 여부만 알고 싶다면 Windows 관련 상수 중 하나가 정의되어 있는지 테스트하는 것이 좋습니다. 예:
$windows = defined('PHP_WINDOWS_VERSION_MAJOR');
이를 검출하기 위해 php_uname 함수를 사용할 수 있습니다.
echo php_uname();
사전 정의된 상수에 따라: 사용자 기여 Notes Volker 및 rdcapasso 솔루션은 다음과 같이 도우미 클래스를 만들 수 있습니다.
<?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
}
이것은 PHP 4.3+로 동작합니다.
if (strtolower(PHP_SHLIB_SUFFIX) === 'dll')
{
// Windows
}
else
{
// Linux/UNIX/OS X
}
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
이 경우에는, 이러한 작은 작업에도 충분히 효율적이며, 보다 우아합니다.
핵심 사전 정의된 상수: http://us3.php.net/manual/en/reserved.constants.php 에서PHP_OS (string)
일정한.
또는 클라이언트의 OS를 검출하는 경우는, 다음의 순서에 따릅니다.
<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";
$browser = get_browser(null, true);
print_r($browser);
?>
http://us3.php.net/manual/en/function.get-browser.php 에서
편집 내용에 따르면 명령줄에서 PHP 서버 이름 공개를 참조할 수 있습니다.
사용할 수 있습니다.
string php_uname ([ string $mode = "a" ] )
그렇게
php_uname("s")
's': 운영체제 이름예: FreeBSD.
http://php.net/manual/en/function.php-uname.php 를 참조해 주세요.
PHP > 5.3.0에 상수가 존재하는지 확인할 수 있습니다(수동).
if (defined('PHP_WINDOWS_VERSION_BUILD')) {
// is Windows
}
이전에는 Symfony에서 이 방법을 사용했습니다.현재는 다른 방법을 사용하고 있습니다.
if ('\\' === DIRECTORY_SEPARATOR) {
// is Windows
}
중인지 하려면 Linux에서 실행 중인지 됩니다.(PHP_OS === 'Linux')
및 substr를 사용할 가 없습니다. strtolower() 기판()을 사용합니다.
function isWin(){
if (strtolower(substr(PHP_OS, 0, 3)) === 'win' || PHP_SHLIB_SUFFIX == 'dll' || PATH_SEPARATOR == ';') {
return true;
} else {
return false;
}
}
언급URL : https://stackoverflow.com/questions/5879043/php-script-detect-whether-running-under-linux-or-windows
'sourcecode' 카테고리의 다른 글
org.internate 를 선택합니다.Mapping Exception:java.util의 유형을 확인할 수 없습니다.표: College의 [org.hibernate.mapping]열 목록:열(학생)] (0) | 2022.09.13 |
---|---|
열을 빈 문자열로 기본 설정하다 (0) | 2022.09.12 |
어떻게 내가 약속 전화 간단히 뷰 앱 또는 구성 요소의 속성을 업데이트할 수 있을까요? (0) | 2022.09.12 |
날짜에 10초 추가 (0) | 2022.09.12 |
형식 스크립트 형식 'string'을 형식에 할당할 수 없습니다. (0) | 2022.09.12 |