PHPアプリケーションを開発するときは、デバッグまたは最適化のためにサーバーのシステム情報を取得する必要があることがよくあります。 PHPは非常に有用な機能PHP_UNAME()を提供します。これは、オペレーティングシステム名、バージョン番号など、システムに関する関連情報を取得するのに役立ちます。今日は、PHP_UNAME()を使用してシステム情報を取得する方法、特に一般的なスクリプトを作成するときに異なるオペレーティングシステムに応じて適応する方法について説明します。
Php_uname()は、主にサーバーオペレーティングシステムの詳細情報を返すために使用される内蔵PHP関数です。この関数を通じて、対応する最適化またはデバッグを作成するために、PHPスクリプトが実行されているサーバー環境を簡単に理解できます。この関数は、オペレーティングシステム名、バージョン番号、ハードウェアアーキテクチャ、その他の情報を含む文字列を返します。
$system_info = php_uname();
echo $system_info;
上記のコードを呼び出した後、次のようなものが返される場合があります。
Linux myserver 5.4.0-42-generic #46-Ubuntu SMP Thu Jul 9 14:58:19 UTC 2020 x86_64
これには、オペレーティングシステムタイプ(Linux)、ホスト名(MyServer)、カーネルバージョン(5.4.0-42-Generic)、ハードウェアアーキテクチャ(x86_64)などの情報が含まれます。
php_uname()関数は、さまざまな種類の情報の返品を指定するオプションのパラメーターを受信できます。具体的には、このパラメーターは次の値になります。
A :オペレーティングシステム名、ホスト名、カーネルバージョン、ハードウェアアーキテクチャなど(デフォルト値)などの詳細情報を返します。
S :オペレーティングシステムの名前のみを返します(例:Linux、Windows、Darwinなど)。
R :オペレーティングシステムのバージョン番号を返します。
V :オペレーティングシステムのバージョン情報を返します。
M :ハードウェアアーキテクチャタイプ(例:x86_64、arm64など)を返します。
echo php_uname('s'); // 出力オペレーティングシステム名
echo php_uname('r'); // 出力オペレーティングシステムバージョン
echo php_uname('m'); // 出力ハードウェアアーキテクチャタイプ
php_uname()を介して取得されたシステム情報は、異なるオペレーティングシステムに従って調整できます。たとえば、クロスプラットフォームPHPアプリケーションで別のオペレーティングシステムを使用する場合、異なるパスセパレーターを処理するか、異なるシステムコマンドを実行する必要がある場合があります。
$os = php_uname('s'); // オペレーティングシステム名を取得します
if (strpos($os, 'Windows') !== false) {
// の場合Windowsシステム,バックスラッシュをパスセパレーターとして使用します
$path_separator = '\\';
} else {
// それ以外の場合は、フォワードスラッシュを使用します
$path_separator = '/';
}
echo "パスセパレーターはです: " . $path_separator;
$os = php_uname('s'); // オペレーティングシステム名を取得します
if (strpos($os, 'Windows') !== false) {
// の場合Windowsシステム,コマンドラインツールを使用します
$command = 'dir';
} else {
// それ以外の場合は使用しますUnix类システム的命令
$command = 'ls -l';
}
exec($command, $output);
echo implode("\n", $output); // 出力コマンド実行結果
php_uname()は非常に便利ですが、場合によっては、システム情報を取得すると、サーバー、特にオペレーティングシステムバージョンなどの機密情報が漏れている可能性があります。したがって、生産環境では、この情報をユーザーに配布することを避けることをお勧めします。取得したシステム情報を、管理者がのみアクセスできるファイルをログに制限するか、適切な許可チェックをスクリプトに追加することを検討してください。
実際の開発では、システム情報を取得した後、システム環境に従って特定のURLを生成する必要がある場合があります。たとえば、さまざまなオペレーティングシステムに従って、さまざまなサーバーリソースに接続します。