UNIX/DOS固有のスクリプトを作成するには、自分がどの種類のオペレーティングシステムであるかを知る必要があります。
この情報を取得するにはどうすればよいですか?phpinfo();
は、Unixで実行しているかどうかを非常に明確に示しています。
PHPには多くの 事前定義された定数 があり、これはしばしば有用です。
ここで、PHP_OS
は探しているものです。
たとえば、現在のマシンでは、このコードは次のとおりです。
var_dump(PHP_OS);
与える:
string 'Linux' (length=5)
いくつかの例と、php_uname
関数は php_uname
;例えば(quoting):
<?php
echo php_uname();
echo PHP_OS;
/* 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!';
}
そのページには次のようにも書かれています。
オペレーティングシステムのみの名前については、
PHP_OS
定数ですが、この定数にはオペレーティングシステムが含まれていることに注意してくださいPHP wasbuilton)。
_PHP_OS
_には実際にPHPが構築されたプラットフォームが含まれます。これはデプロイされたプラットフォームとは異なる場合があります。したがってphp_uname('s')
の方が信頼性があります。
PHP 7.2.の時点で、オペレーティングシステムファミリを取得するための新しい事前定義済み定数、つまりPHP_OS_FAMILYがあります。 string「Windows」、「BSD」、「OSX」、「Solaris」、「Linux」または「不明」のいずれかを返します。
PHP_OSは、ホストos名で定義されます: http://us2.php.net/manual/en/reserved.constants.php
PHPが実行されているプラットフォームを確認するには、2つの異なる方法があります。
PHP_OS
_を使用します。これは、constであり、PHPが組み込まれた 'オペレーティングシステム名'を指します。php_uname()
_を使用すると、スクリプトが実行されているプラットフォーム(オペレーティングシステム名、ホスト名、バージョン情報、リリース名、マシンタイプ)の詳細がわかります。その上。PHPは、ディストリビューションの名前を取得する関数php_uname
はLinuxコマンドuname
に似ていますが、ディストリビューション自体に関する情報は提供しません。
php_uname
nor PHP_OS
十分な情報を提供します。ディストリビューションについてですが、OSの種類(例:Linux/Windows).
実行中のOS /ディストリビューションが何であるかを知る最良の方法は、/etc/os-release
、良いことは、このファイルがすべてのシステムユーザーに読み取り許可を持っていることであり、悪いことは共有ホスティングでは動作しないかもしれないことです。
ここで私は非常に簡単なPHPを読み取り、変換する関数os-release
配列へ:
function getOSInformation()
{
if (false == function_exists("Shell_exec") || false == is_readable("/etc/os-release")) {
return null;
}
$os = Shell_exec('cat /etc/os-release');
$listIds = preg_match_all('/.*=/', $os, $matchListIds);
$listIds = $matchListIds[0];
$listVal = preg_match_all('/=.*/', $os, $matchListVal);
$listVal = $matchListVal[0];
array_walk($listIds, function(&$v, $k){
$v = strtolower(str_replace('=', '', $v));
});
array_walk($listVal, function(&$v, $k){
$v = preg_replace('/=|"/', '', $v);
});
return array_combine($listIds, $listVal);
}
この関数は次のようなものを出力します:
Array
(
[name] => Ubuntu
[version] => 16.04.2 LTS (Xenial Xerus)
[id] => ubuntu
[id_like] => debian
[pretty_name] => Ubuntu 16.04.2 LTS
[version_id] => 16.04
[home_url] => http://www.ubuntu.com/
[support_url] => http://help.ubuntu.com/
[bug_report_url] => http://bugs.launchpad.net/ubuntu/
[version_codename] => xenial
[ubuntu_codename] => xenial
)
Og lykke [1]を開催;-)
[1]デンマーク語のフレーズは幸運を意味します。
Php 7.2.0では、PHP_OS_FAMILY
定数を使用できます。
他のPHP使用できるバージョン:
/**
* return DOS OR UNIX
*/
function familyOS() {
return (stripos(PHP_OS, "WIN") === 0)? "DOS" : "UNIX";
}
#!/usr/bin/env php
<?php
$platform = DIRECTORY_SEPARATOR === '\\'
? 'Windows'
: 'Unix/Linux';
これはあまりきめ細かいものではないことは承知していますが、Winシステムと* nixシステム間の単純な認識には十分かもしれません。 YMMV