Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment determiner si l'on est sous environnement windows ?

17 réponses
Avatar
heulman
Bonjour,

Comment déterminer à coup sûr en php si l'on est sous environnement windows
?

Je pense utiliser la constante PHP_OS mais je m'interroge sur sa fiabilité.
Windows XP me retourne WINNT.
Est-ce toutes les versions de windows retournent une valeur commençant par
WIN ?

Peut-être existe-t-il une routine standard qui serait plus fiable ?

merci,
heulman

10 réponses

1 2
Avatar
P'tit Marcel
Comment déterminer à coup sûr en php si l'on est sous environnement windows ?
Je pense utiliser la constante PHP_OS mais je m'interroge sur sa fiabilité.
Windows XP me retourne WINNT.
Est-ce toutes les versions de windows retournent une valeur commençant par
WIN ?


à lire la doc ou les remarques en ligne sur les fonctions dl ou
memory_get_usage, cela semble le cas :

//If its Windows
if ( substr(PHP_OS,0,3) == 'WIN')
...

on peut aussi tester les constantes DIRECTORY_SEPARATOR (/ sous Linux et
sous Windows), ou PHP_SHLIB_SUFFIX (so sous linux et dll sous Win) à
condition qu'elles soient définies dans la version de php.

côté fonction, php_uname('s') pourrait faire l'affaire.
Elle retourne a priori les valeurs suivantes :
Operating System valeur retournée
Windows NT/2000/XP Windows_NT
Windows 95 Windows_95
Windows 98 Windows_98
Windows Me Windows_ME


eça
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/

Avatar
Denis Beauregard
Le 28 Nov 2006 22:11:24 GMT, "heulman" écrivait
dans fr.comp.lang.php:

Bonjour,

Comment déterminer à coup sûr en php si l'on est sous environnement windows
?


Par rapport à Unix/Linux/BSD ? Il suffit de regarder la casse.
On écrit dans un fichier ABC.def une chaîne comme ALLO, puis dans
abc.DEF la chaîne DRELIN. Puis on lit ABC.def et si le fichier
contient DRELIN, on est dans Windows... On fait le test une fois
et on relit le résultat les fois suivantes.

Ceci dit, il y a la fonction uname qui peut servir:
http://ca.php.net/manual/fr/function.php-uname.php

Denis

Je pense utiliser la constante PHP_OS mais je m'interroge sur sa fiabilité.
Windows XP me retourne WINNT.
Est-ce toutes les versions de windows retournent une valeur commençant par
WIN ?

Peut-être existe-t-il une routine standard qui serait plus fiable ?

merci,
heulman


Avatar
John GALLET
Comment déterminer à coup sûr en php si l'on est sous environnement windows
?


Est-ce que ça sert vraiment à quelque chose ? PHP est un langage portable
sur de multiples OS, et à de rares fonctions près, dont on peut vérifier
l'existence avec http://fr2.php.net/manual/en/function.function-exists.php
ou http://fr2.php.net/manual/en/function.get-loaded-extensions.php selon
le niveau auquel on veut se placer, tout script php *doit* tourner sur
n'importe quel OS.

Le peu de spécifique concernant les noms de chemins doit se faire par
paramètre de configuration de toutes façons (i.e. utiliser une constante
ou un paramètre de configuration aisément modifiable en UN SEUL endroit du
code au lieu d'être en dur partout, peu importe donc que ce soit C: ou
/export/home).

Peut-être existe-t-il une routine standard qui serait plus fiable ?


Routine non, méthode de développement qui devrait être standard, oui :
**Arrêtez de faire de la bidouille spécifique à tel ou tel OS et
écrivez du code générique**.

a++;
JG

Avatar
Olivier Miakinen

Comment déterminer à coup sûr en php si l'on est sous environnement windows
?


Est-ce que ça sert vraiment à quelque chose ? [...]

**Arrêtez de faire de la bidouille spécifique à tel ou tel OS et
écrivez du code générique**.


Merci, John, je n'aurais pas dit mieux.


Avatar
CrazyCat
Comment déterminer à coup sûr en php si l'on est sous environnement windows
Est-ce que ça sert vraiment à quelque chose ? [...]

**Arrêtez de faire de la bidouille spécifique à tel ou tel OS et
écrivez du code générique**.
Merci, John, je n'aurais pas dit mieux.



Je suis d'accord mais il y a toujours des exceptions, ne serait-ce que
lorsqu'on doit traiter des fichiers en utilisant les chemins physiques.

J'ai eu le cas sur un site que j'ai du reprendre en vitesse (pas le
temps de refaire tout le système) et déterminer l'OS me fut bien utile.

--
Astuces pour webmasters: http://www.crazycat.info
Tchat francophone: http://www.crazy-irc.net



Avatar
heulman
"John GALLET" a écrit dans le message de news:

Comment déterminer à coup sûr en php si l'on est sous environnement
windows
?


Est-ce que ça sert vraiment à quelque chose ? PHP est un langage portable
sur de multiples OS, et à de rares fonctions près, dont on peut vérifier
l'existence avec http://fr2.php.net/manual/en/function.function-exists.php
ou http://fr2.php.net/manual/en/function.get-loaded-extensions.php selon
le niveau auquel on veut se placer, tout script php *doit* tourner sur
n'importe quel OS.

Le peu de spécifique concernant les noms de chemins doit se faire par
paramètre de configuration de toutes façons (i.e. utiliser une constante
ou un paramètre de configuration aisément modifiable en UN SEUL endroit du
code au lieu d'être en dur partout, peu importe donc que ce soit C: ou
/export/home).


justement, à cet endroit il faut pouvoir vérifier sur quel environnement php
tourne.

heulman


Avatar
heulman
"John GALLET" a écrit dans le message de news:

Comment déterminer à coup sûr en php si l'on est sous environnement
windows
?


Le peu de spécifique concernant les noms de chemins doit se faire par
paramètre de configuration de toutes façons (i.e. utiliser une constante
ou un paramètre de configuration aisément modifiable en UN SEUL endroit du
code au lieu d'être en dur partout, peu importe donc que ce soit C: ou
/export/home).


il y a aussi la localisation:
fr_FR sous linux et french sous windows

heulman


Avatar
heulman
"heulman" a écrit dans le message de news:
456c57e1$0$27376$
Bonjour,

Comment déterminer à coup sûr en php si l'on est sous environnement
windows ?

Je pense utiliser la constante PHP_OS mais je m'interroge sur sa
fiabilité.
Windows XP me retourne WINNT.
Est-ce toutes les versions de windows retournent une valeur commençant par
WIN ?

Peut-être existe-t-il une routine standard qui serait plus fiable ?


j'étais passé à coté de php_uname() qui semble faire l'affaire.

heulman

Avatar
John GALLET
paramètre de configuration de toutes façons (i.e. utiliser une constante
ou un paramètre de configuration aisément modifiable en UN SEUL endroit du
code au lieu d'être en dur partout, peu importe donc que ce soit C: ou
/export/home).


justement, à cet endroit il faut pouvoir vérifier sur quel environnement php
tourne.


Non.

Et pas plus concernant l'internationalisation, il n'y a pas que setlocale
dans la vie. Passez 10 minutes à regarder le fichier config.inc.php et le
répertoire lang/ de phpMyAdmin par exemple, ça pourra éventuellement vous
donner des idées.

Enfin après, du moment que je n'ai pas à débugger vot'truc après, ce que
j'en dis hein... Faites donc comme vous voudrez.

JG


Avatar
Michael DENIS
Le 29 Nov 2006 10:55:34 GMT, CrazyCat
écrivait:

Je suis d'accord mais il y a toujours des exceptions, ne serait-ce que
lorsqu'on doit traiter des fichiers en utilisant les chemins physiques.


Non. Cet exemple en tous les cas rentre parfaitement dans le cas
expliqué par John. Au lieu de mettre quelquechose comme:

if windows
$chemin="C:mon_cheminwwwimagestest.jpg"
else //linux
$chemin="/home/www/images/test.jpg
}

on met

//définition des variables globales
if windows
$racine="C:mon_cheminwww"
$separ=""
else
$racine="/home/www/"
$separ="/"
}

$chemin=$racine.$separ."www".$separ."images".$separ."test.jpg"

--
Michaël DENIS


Déco? <http://www.toiles-de-mayenne.com/>

1 2