How to get the OS on which PHP is running?

05/23/2020 20:30:02

For building a unix/dos specific script I need to know on which kind of operating system I am.

How do i get this information?
phpinfo(); tells me a lot more and not very clear whether I'm running on unix or not.

Verified Answer (98 Votes)

09/27/2009 03:47:14

PHP has many predefined constants that are often useful.

Here, PHP_OS is the one you are looking for.


For instance, on my current machine, this code :

var_dump(PHP_OS);

Gives :

string 'Linux' (length=5)


You have some examples and comparisons with what the php_uname function can get you on the manual page of php_uname ; for instance (quoting) :

<?php
echo php_uname();
echo PHP_OS;

/* Some possible outputs:
Linux localhost 2.4.21-0.13mdk #1 Fri Mar 14 15:08:06 EST 2003 i686
Linux

FreeBSD localhost 3.2-RELEASE #15: Mon Dec 17 08:46:02 GMT 2001
FreeBSD

Windows NT XN1 5.1 build 2600
WINNT
*/

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    echo 'This is a server using Windows!';
} else {
    echo 'This is a server not using Windows!';
}

That page also says :

For the name of just the operating system, consider using the PHP_OS constant, but keep in mind this constant will contain the operating system PHP was built on.

98

Answer #2 (37 Votes)

10/21/2012 15:38:43

Just bear in mind that PHP_OS actually contains the platform on which PHP was built. This may not be the same platform as that on which it is deployed. Therefore php_uname('s') is more reliable.

37

Answer #3 (11 Votes)

04/14/2017 23:16:56

As of PHP 7.2.0 we have a new Predefined Constant to get the operating system family i.e. PHP_OS_FAMILY. It returns a string Either of 'Windows', 'BSD', 'OSX', 'Solaris', 'Linux' or 'Unknown'.

11
3
Hack Hex uses Stack Exchance API by the Stack Exchange Inc. to scrape questions/answers under Creative Commons license.