OSの判別
OSの判別には
- PHP_OS
- DIRECTORY_SEPARATOR
- PATH_SEPARATOR
などが便利
OS判別
ローカル環境とサーバ環境でOSが違うというのは一般的だと思いますが、そのようなOSの判別には、PHP_OSという定数が便利です。PHP_OSはPHPに組み込まれている定数で、PHPを実行中のOSの名称を取得する事ができます。
OS名出力サンプル
<?php
echo PHP_OS;
?>
出力結果
PHP_OSがどのような値になっているかは、もちろんOSによって違うのですが、一般的なものに以下のようなものがあります。
- AIX
- Darwin
- MacOS
- Linux
- SunOS
- WIN32
- WINNT
ローカルのテスト環境がWindowsで、公開用のサーバがLinuxなどという環境の違い程度であれば、この定数で簡単に判別する事ができます。
OS判別サンプル
<?php
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");


