detectar-sistema-operativo-php

Como detectar el sistema operativo desde php

Cuando tienes un equipo de trabajo, o tu equipo de trabajo tiene un sistema operativo diferente al del equipo de pruebas, puede que te encuentres con problemas en la programación debido a que los SO interpretan algunas cosas de formas diferentes, como por ejemplo las rutas de carpetas a la hora de incluir archivos. Con este pequeño manual podrás detectar el tipo de sistema operativo con php.

Siguiendo con el ejemplo, vamos a poner el caso de que estés trabajando con windows, tengas un entorno de pruebas local por ejemplo con Wampserver, y el servidor para pruebas global de todos los integrantes del equipo funcione bajo linux. Las rutas de carpetas con los includes dejarían de funcionar tan pronto enviemos nuestros archivos al svn y los sincronicemos con el entorno general, pero hay solución para esto.

Desde php es posible detectar el sistema operativo

Tenemos una pequeña constante, que nos dará esta información, y por tanto podremos ejecutar diferentes acciones dependiendo de cómo tengamos que gestionar estas diferencias, pongamos por ejemplo. La constante en concreto es PHP_OS, y la usaremos como otra cualquiera, por ejemplo

echo PHP_OS

Que nos devolverá un valor de la siguiente lista:

  • CYGWIN_NT-5.1
  • Darwin
  • FreeBSD
  • HP-UX
  • IRIX64
  • Linux
  • NetBSD
  • OpenBSD
  • SunOS
  • Unix
  • WIN32
  • WINNT
  • Windows
  • OS/2 Warp
  • eComStation
  • RISC OS
  • Windows XP 64-bit

Puede que no esté completa, pero son la mayoría de opciones que nos pueden aparecer a la hora de utilizar esta constante.

Cómo usar PHP_OS para detectar un sistema operativo

Si por ejemplo queremos definir el separador de carpetas para diferenciar entre nuestro equipo que está en windows, y el del servidor de pruebas que está en linux, podemos hacerlo de la siguiente forma:

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    echo 'El sistema es windows y usa contrabarra \';
} else {
    echo 'No estamos en Windows, y sé que el servidor es linux y usa barra /';
}

Lo que estamos haciendo en la primera línea, es extraer las 3 primeras letras de la constante PHP_OS (pasándolas a mayúsculas), y si son  WIN, entonces el sistema es windows, en caso contrario ejecutamos otro código.

Léete también  Cómo mover aplicaciones instalados en Windows 10 a un disco USB o secundario

Aquí podemos poner una constante personalizada por ejemplo con una definición u otra dependiendo del sistema operativo, y utilizarla en nuestro código para que se ejecute correctamente en cualquiera de los dos casos.

¿Qué SO usas para programar? ¿Y para tus servidores?


AYUDANOS a poder seguir dando respuestas. Te podemos echar una mano y tú también a nosotros, símplemente dale a me gusta.