【PHP】 サーバが UNIX系 か 非UNIX か見分ける方法 ~realpath()~

PHPは、(当然ながら)動かすサーバの環境によって動作が変わる。今日のメモは、サーバ環境と言っても、とりわけOSを見分ける方法。

OSによって動作が変わるのは、要するに UNIX系OSか、非UNIX(Windows)か、というのが問題になる。これは、パスのルールやOSのコマンド関連が全然違うからだ。

$_ENV などの環境変数から判断することもできるが、よりダイレクトで確実な方法として、realpath() を使ったらどうだろう。

<?php
    if( realpath('/') == '/' ){
        echo( 'UNIX系' );
    }else{
        echo( 'Windows' );
    }
?>

realpath() は、与えたパスにファイルもディレクトリも存在しない場合に false を返すが、'/' は必ず存在するはず。UNIX系のOSでは、ルートディレクトリは必ず '/' なのに対し、Windowsではボリューム文字が入って 'C:\' のようになる。

こんな方法で分岐すれば、OS(パス)依存の問題は回避できるのではないだろうか。

あ。メリークリスマス。


プロフィール

コヤナギ トモヤ

まったりウェブ系コーダーしてます。PHP製静的CMS Pickles 2 を開発しています。

RSSフィード

  • このサイトは、 コヤナギ トモヤ の個人サイトです。
  • 個人的な主張や、活動の記録などを掲載しています。 所属する企業、団体、その他の意見や立場を代表するものではありません。
  • 掲載された内容は古くなっている可能性があります。 特に古い記事では、現在の筆者の考えと異なる主張をしていることがありますが、記録としてそのまま残しております。 予めご了承ください。
ページの先頭へ戻る