Discussion:
O.S du serveur
(trop ancien pour répondre)
doug713705
2007-10-05 18:07:09 UTC
Permalink
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) -
Denis Beauregard
2007-10-05 19:37:11 UTC
Permalink
Le 05 Oct 2007 18:07:09 GMT, doug713705
Post by 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.
Pour Mac ou Linux etc... aucun problème, par contre pour Windows ca se gate
$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
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
Mihamina Rakotomandimby
2007-10-05 20:11:00 UTC
Permalink
Post by Denis Beauregard
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)
doug713705
2007-10-07 21:46:17 UTC
Permalink
Le vendredi 5 octobre 2007 21:37, Denis Beauregard s'est exprimé de la sorte
Post by Denis Beauregard
Avant de poser la question, pourquoi tu n'as pas essayé ?
J'ai essayé
Post by Denis Beauregard
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) -
Mickael Wolff
2007-10-08 07:19:54 UTC
Permalink
Post by doug713705
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>.
Post by doug713705
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
doug713705
2007-10-08 14:25:48 UTC
Permalink
Le lundi 8 octobre 2007 09:19, Mickael Wolff s'est exprimé de la sorte sur
Post by Mickael Wolff
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) -
Bruno Desthuilliers
2007-10-05 22:12:15 UTC
Permalink
Post by 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.
Il existe déjà pas mal d'applis opensource en PHP. A-tu pensé à regarder
comment elles géraient ce problème ?
Marc
2007-10-08 07:19:54 UTC
Permalink
Post by doug713705
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)
doug713705
2007-10-08 14:25:48 UTC
Permalink
Le lundi 8 octobre 2007 09:19, Marc s'est exprimé de la sorte sur
Post by Marc
Post by doug713705
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) -
Paul
2007-10-13 11:17:31 UTC
Permalink
Post by doug713705
Le lundi 8 octobre 2007 09:19, Marc s'est exprimé de la sorte sur
Post by Marc
Post by doug713705
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)
Si ce n'est que le séparateur qui géne, j'utilise $_ENV["PWD"] qui a
pour valeur le caractère séparateur des répertoires dans un chemin
trouvé à
http://fr.php.net/manual/fr/reserved.variables.php
Tonio
2007-10-08 14:25:48 UTC
Permalink
ben la constante : DIRECTORY_SEPARATOR , non?

via : http://fr.php.net/dir
John GALLET
2007-10-08 14:25:48 UTC
Permalink
Post by doug713705
- 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
doug713705
2007-10-08 16:36:14 UTC
Permalink
Le lundi 8 octobre 2007 16:25, John GALLET s'est exprimé de la sorte sur
Post by John GALLET
Post by doug713705
- 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
Tout simplement !
Post by John GALLET
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.
Tout dépend du niveau de connaissance de l'utilisateur.
Cette application s'adresse à des utilisateur loin d'être avancés ;-)
--
[ Plus ou moins avec une chance de peut-être ]
- Pour me contacter, enlever nospam (2X) -
John GALLET
2007-10-11 18:09:09 UTC
Permalink
Post by doug713705
Tout dépend du niveau de connaissance de l'utilisateur.
Cette application s'adresse à des utilisateur loin d'être avancés ;-)
Rien n'empêche de faire un programme d'installation neu² compliant, comme
par exemple celui de Spip, avec une interface simple qui demande sur quel
type d'OS tourne le biniou.

JG
Mickael Wolff
2007-10-16 14:39:50 UTC
Permalink
Rien n'empêche de faire un programme d'installation neu² compliant.
Le neu² ne sait pas sous quel OS il tourne. Il ne sait même pas que
c'est un logiciel qui lui permet d'exploiter son ordinateur.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Continuer la lecture sur narkive:
Loading...