Search code examples
phpoperating-systemuname

Accurately determine the type of OS PHP is running on


I need to determine the type of OS the PHP server is running on. By type, I mean strings like "windows" or "linux", not "wince", "winnt" etc.

So far, I have to leads: PHP_OS and uname(), the later being more reliable than the earlier (PHP_OS says what OS PHP was built on - according to documentation).


Solution

  • It's important to know that no non-Windows OS string is going to contain the text "win", and no non-OSX OS string is going to contain the word "darwin", and so on. Detecting the OS is easy.

    $uname = strtolower(php_uname());
    if (strpos($uname, "darwin") !== false) {
        // It's OSX
    } else if (strpos($uname, "win") !== false) {
        // It's windows
    } else if (strpos($uname, "linux") !== false) {
        // It's Linux
    } else {
        // It's something your script won't run on
    }