[PILLOLE PHP] Come determinare il sistema operativo del web server?

Una domanda che ho sentito molto spesso è: Come è possibile determinare il sistema operativo del server?
A questa domanda vedo spesso dare delle risposte stravaganti la più frequente delle quali consiste nell’applicare delle improbabili espressioni regolari alla variabile $_SERVER[‘SERVER_SOFTWARE’].
Prima di vedere una soluzione più elegante e sicura rispondiamo brevemente ad una domanda:

A che scopo determinare il sistema operativo del server?

Semplice: in rare circostanze PHP si comporta in modo diverso a dipendenza se il sistema operativo sul quale gira è Linux o Windows (un esempio non trascurabile di questa differenza lo vedremo nella prossima pillola).  Ora, se lo script che stai sviluppando è per te, non c’è nessun problema. Conosci il sistema operativo del tuo server ed agirai di conseguenza. Ma se intendi distribuire il codice, allora dovrai tenere conto di queste differenze e dunque dovrai rilevare il sistema operativo.

Come rilevare il sistema operativo?

PHP mette a disposizione la costante PHP_OS che restituisce appunto il sistema operativo, ma… c’è sempre un ma!
Se per i sistemi operativi Linux PHP_OS ritorna la stringa “Linux”, per i sistemi Windows può ritornarci (a dipendenza del tipo di sistema) almeno tre valori: WINNT, WIN32, Windows.
Ma questo non è un problema così grave. Ci basterà trasformare la stringa tutta in maiuscolo e verificare che le prime tre lettere siano WIN.
Bene. Ti propongo una semplice funzione per determinare se il sistema operativo è Linux, Windows o altro.

function serverOS()
{
    $sys = strtoupper(PHP_OS);

    if(substr($sys,0,3) == "WIN")
    {
        $os = 1;
    }
    elseif($sys == "LINUX")
    {
        $os = 2;
    }
    else
    {
        $os = 3;
    }

    return $os;
}

Come vedi questa funzione ritorna 1 per Windows, 2 per Linux e 3 per altri sistemi.

Conclusione

In questo articolo abbiamo esplorato una particolarità di PHP ed abbiamo risolto in modo elegante la determinazione del sistema operativo del web server. Come detto questa procedura ci risulterà utile in quei casi dove il tipo di sistema operativo determina delle differenze come vedremo nella prossima pillola.

Tag: ,

L'autore

Maurizio è sposato con la triade PHP - MySql - Apache e, non pago, ha un'amante chiamata jQuery. Ha un blog dove cerca di descrivere nei minimi particolari sia la moglie che l'amante. La sua vera specialità è la realizzazione di gestionali complessi anche se non rifiuta mai un sito web. +

Sito web dell'autore | Altri articoli scritti da

Articoli correlati

Potresti essere interessato anche ai seguenti articoli:

8 commenti

Trackback e pingback

  1. Tweets that mention [PILLOLE PHP] Come determinare il sistema operativo del web server? | Your Inspiration Web -- Topsy.com
    [...] This post was mentioned on Twitter by PHP Italia, mtx_maurizio. mtx_maurizio said: RT @YIW [PILLOLE PHP] Come determinare il…
  2. I migliori post della settimana #90 | Web Developer / Web Designer / SEO Specialist / Napoli :: EmaWebDesign
    [...] Come determinare il sistema operativo del web server in PHP? Pubblicato in Migliori post della settimana | Nessun commento…
  3. [PILLOLE PHP] Come ottenere le date in italiano? | Your Inspiration Web
    [...] come ormai dovresti sapere… c’è sempre un ma. Nella precedente pillola PHP avevo anticipato che a volte succede che…

Lascia un Commento