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

O.S du serveur

14 réponses
Avatar
doug713705
Bonjour à toutes, tous,

J'ai écrit une application en php et j'aurais souhaité que cette application
puisse fonctionner indépendamment du système sur lequel elle tourne.

Or cette application manipule certains fichiers contenu dans des répertoires
définis par l'administrateur dans un fichier de configuration.

Par Ex :

Dans le fichier de conf :
$dir=/tmp/mon_appli/mon_dir;
Dans la page :
$filename="mon_fichier";
$file=$dir."/".$filename;

Pour Mac ou Linux etc... aucun problème, par contre pour Windows ca se gate
puisque si :

$dir=c:\tmp\mon_appli\mon_dir
et que
$filename="mon_fichier";
$file=$dir."/".$filename;

alors
fopen($file,"r") ne fonctionnera pas puisque
$file vaut c:\tmp\mon_appli\mon_dir/mon_fichier

Voici donc mes questions :
- Existe t-il un moyen de détecter le "path separator" à la manière de
Java ?
- Si non, un moyen de détecter l'O.S sur lequel tourne l'appli ?

J'ai googlé sans succès, les variables $_ENV ou $_SERVER ne contiennent pas
ces infos.

phpinfo() Arrive a déterminer l'O.S, j'imagine donc qu'une autre commande
doit pouvoir le faire.

Cependant peut-être me goure-je dans ma façon de contourner le problème.

Vos conseils et/ou liens sont les bienvenus.

--
[ Plus ou moins avec une chance de peut-être ]
- Pour me contacter, enlever nospam (2X) -

10 réponses

1 2
Avatar
Denis Beauregard
Le 05 Oct 2007 18:07:09 GMT, doug713705
écrivait dans fr.comp.lang.php:

Bonjour à toutes, tous,

J'ai écrit une application en php et j'aurais souhaité que cette application
puisse fonctionner indépendamment du système sur lequel elle tourne.

Or cette application manipule certains fichiers contenu dans des répertoires
définis par l'administrateur dans un fichier de configuration.

Pour Mac ou Linux etc... aucun problème, par contre pour Windows ca se gate
puisque si :

$dir=c:tmpmon_applimon_dir
et que
$filename="mon_fichier";
$file=$dir."/".$filename;

alors
fopen($file,"r") ne fonctionnera pas puisque
$file vaut c:tmpmon_applimon_dir/mon_fichier


Avant de poser la question, pourquoi tu n'as pas essayé ?

/ et fonctionnent tous les deux dans Windows, du moins dans ceux
que j'ai essayé (je suis à Windows 98).

La seule vraie difficulté, c'est en mode invite (prompt ou
command.com) car / sert en DOS à séparer les arguments:

dir c:windows /s

mais

ls /home/compte -ali

mais fopen ("c:windows/win.ini", "r"); devrait fonctionner sous
Windows.


Denis

Avatar
Mihamina Rakotomandimby
Denis Beauregard wrote:
Avant de poser la question, pourquoi tu n'as pas essayé ?


Sur ce post en particulier, je me permet de réagir:
- Il n'a pas forcément les deux OS sous la main.
- Il ne sait pas si ça marche sur ses machine à cause de sa conf, il
peut etre interessant de savoir si il faut une conf particulière (il ne
le savait pas avant ton post)

Avatar
Bruno Desthuilliers
Bonjour à toutes, tous,

J'ai écrit une application en php et j'aurais souhaité que cette application
puisse fonctionner indépendamment du système sur lequel elle tourne.

Or cette application manipule certains fichiers contenu dans des répertoires
définis par l'administrateur dans un fichier de configuration.

Il existe déjà pas mal d'applis opensource en PHP. A-tu pensé à regarder

comment elles géraient ce problème ?

Avatar
doug713705
Le vendredi 5 octobre 2007 21:37, Denis Beauregard s'est exprimé de la sorte
sur fr.comp.lang.php :

Avant de poser la question, pourquoi tu n'as pas essayé ?



J'ai essayé


mais fopen ("c:windows/win.ini", "r"); devrait fonctionner sous
Windows.


Effectivement, le problème venait d'un autre bout de mon code mais je
m'étais arrêté à la première cause probable.

Cependant, j'aurais bien voulu savoir s'il était possible d'identifier l'O.S
du serveur par un bout de code PHP mais je n'ai rien trouvé.
Cela pourrait être utile dans d'autres cas.

Merci de ton aide.

--
[ Plus ou moins avec une chance de peut-être ]
- Pour me contacter, enlever nospam (2X) -

Avatar
Mickael Wolff

Cependant, j'aurais bien voulu savoir s'il était possible d'identifier l'O.S
du serveur par un bout de code PHP mais je n'ai rien trouvé.


Oui, et tu le trouveras dans la documentation officielle de PHP
<http://fr3.php.net/manual/fr/function.php-uname.php&gt;.

Cela pourrait être utile dans d'autres cas.


Lequel ? De toute façon, PHP sous MS Windows c'est le démon (oui, ceci
est une honteuse tentative de troll en cette douce nuit d'automne).

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

Avatar
Marc

phpinfo() Arrive a déterminer l'O.S, j'imagine donc qu'une autre commande
doit pouvoir le faire.



regarde de ce coté : http://fr.php.net/php_uname (PHP_OS)

Avatar
John GALLET
- Existe t-il un moyen de détecter le "path separator" à la manière de
Java ?


http://fr2.php.net/manual/en/ref.dir.php

Mais le paramètre de configuration perso de l'application qu'on laisse à
la discrétion de la personne qui installe, c'est pas mal non plus et
c'est le plus simple.

a++;
JG

Avatar
doug713705
Le lundi 8 octobre 2007 09:19, Marc s'est exprimé de la sorte sur
fr.comp.lang.php :


phpinfo() Arrive a déterminer l'O.S, j'imagine donc qu'une autre commande
doit pouvoir le faire.



regarde de ce coté : http://fr.php.net/php_uname (PHP_OS)


Parfait merci !
--
[ Plus ou moins avec une chance de peut-être ]
- Pour me contacter, enlever nospam (2X) -


Avatar
doug713705
Le lundi 8 octobre 2007 09:19, Mickael Wolff s'est exprimé de la sorte sur
fr.comp.lang.php :

De toute façon, PHP sous MS Windows c'est le démon (oui, ceci
est une honteuse tentative de troll en cette douce nuit d'automne).


Parfois il faut savoir composer avec le diable ;-)
gniark gniark gniark !


--
[ Plus ou moins avec une chance de peut-être ]
- Pour me contacter, enlever nospam (2X) -

Avatar
Tonio
ben la constante : DIRECTORY_SEPARATOR , non?

via : http://fr.php.net/dir
1 2