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  Como resetear el password de administrador de ISPConfig3 por ssh

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.