OSの判別
OSの判別には
- PHP_OS
- DIRECTORY_SEPARATOR
- PATH_SEPARATOR
などが便利
OS判別
ローカル環境とサーバ環境でOSが違うというのは一般的だと思いますが、そのようなOSの判別には、PHP_OSという定数が便利です。PHP_OSはPHPに組み込まれている定数で、PHPを実行中のOSの名称を取得する事ができます。
OS名出力サンプル
- echo PHP_OS;
出力結果
PHP_OSがどのような値になっているかは、もちろんOSによって違うのですが、一般的なものに以下のようなものがあります。
- AIX
- Darwin
- MacOS
- Linux
- SunOS
- WIN32
- WINNT
ローカルのテスト環境がWindowsで、公開用のサーバがLinuxなどという環境の違い程度であれば、この定数で簡単に判別する事ができます。
OS判別サンプル
- if (PHP_OS == "WIN32" || PHP_OS == "WINNT") {
- // Windwos用の処理
- } else {
- // サーバ環境用の処理
- }
ところで、上記のようなWindow環境とサーバ環境の判別で振り分けておきたいものの中には、ディレクトリの区切り文字やインクルードパスの区切り文字などがあるかと思います。
ディレクトリの区切り文字は、Windowsで「\」ですが、Linuxなどでは「/」が使用されています。
インクルードパスの区切り文字は、Windowsが「:」(コロン)で、Linuxなどは「;」(セミコロン)です。
この2つはOSの違いの代表的ものなので、上記のような判別式で判別しようとしてしまいそうなのですが、実はこれにも便利な定数が用意されています。
OS関連の定数
- DIRECTORY_SEPARATOR; // ディレクトリの区切り文字
- PATH_SEPARATOR; // パスの区切り文字
DIRECTORY_SEPARATORもPATH_SEPARATORもPHPに組み込まれている定数です。DIRECTORY_SEPARATORはディレクトリの区切り文字を、PATH_SEPARATORはパスの区切り文字を取得する事ができます。それぞれOSによって中身がちゃんと変わっていますので、いちいちOSの判別用の条件分岐を使う必要はありません。
つまり、ディレクトリの記述には条件分岐をせず、以下のような記述で十分です。
ディレクトリの設定サンプル
- "dirname" . DIRECTORY_SEPARATOR . "filename";
インクルードパスの設定なら以下のような記述ができます。
インクルードパスの設定サンプル
- set_include_path(get_include_path() . PATH_SEPARATOR . "pathname");





