Mit begrenztem Wissen über Computer, Software und 42

schreibt Andre

PHP Erkennen ob Linux oder Windows OS

31.03.12 (Allgemein, PHP)

Meine schon erwähnte Entwicklungsumgebung (mein Laptop) läuft mit Windows XP und die Webseiten werden später auf Linux-Servern der weiten Welt des Internets präsentiert. Dies ist sicherlich keine ungewöhnliche Gegebenheit.

Nun ist es so, dass einige Pfade, Datenbankgeschichten etc. sich zwischen meinem Laptop und den Linux-Servern unterscheiden, also entsprechend angepasst werden müssen.

Bisher – seit Jahren – habe ich über eine etwas komplexere Pfaduntersuchung ermittelt, ob die Scripte auf dem Server oder meinem Laptop laufen. Das geht aber alles ganz einfach, man muss nur bekannte Informationen auch einsetzen und damit ich zukünftig nicht wieder einen solchen “Heckmeck” veranstalte, folgt die einfache Lösung.

In PHP hilft die Konstante DIRECTORY_SEPARATOR

Diese Konstante gibt es seit PHP 4.3 – fast eine halbe Ewigkeit – und enthält bei Linux den Slash (/) und bei Windows den Backslash (\). Jetzt noch eine kleine IF-Bedingung hinzugefügt und schon ist bekannt, ob das Script auf dem Server (Linux) oder auf der Entwicklungsumgebung (Windows) läuft.

if(DIRECTORY_SEPARATOR == ‘/’){
//Linux-Kram (Server)
}
else{
//Windows-Kram (Entwicklungsumgebung)
}

Auch einige andere Konstanten/Funktionen könnten zur Unterscheidung eingesetzt werden. Einige geben direkt das OS zurück, aber mir reicht die Unterscheidung zwischen Windows und Linux. Mitunter tauchen dabei auch Probleme auf.  So liefert z.B. php_uname mitunter das OS, auf dem PHP compiliert wurde und nicht das aktuelle Betriebssystem.

Suchbegriffe

  • content
  • erkennen windows oder linux server
  • php directory erkennen
  • PHP os erkennen