[Fwd: Re: [mlfichadh] Non fonctionneemnt sous Windows de l'application] |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/mlfichadh Archives
]
Reposté sur la liste car non parvenu la première fois...
-------- Original Message --------
Subject: Re: [mlfichadh] Non fonctionneemnt sous Windows de l'application
Date: Thu, 13 Mar 2008 20:18:57 +0100
From: Antoine Viel <antoine-viel@xxxxxxxxxx>
To: mlfichadh@xxxxxxxxxxxxxxxxxxx
References: <47D72158.3030805@xxxxxxxxx>
Louis Matringe wrote:
Bonjour,
Depuis quelques temps je testais le projet sous Linux et non sous Windows.
Je viens de refaire un essai sous easyPhp version 2.0b avec :
-Apache 2.2.3
-Php 5.2.0
-Mysql 5.0.27
J'ai un erreur dès le lancement sur l'appel à la fonction *posix_uname()*
dans le module *utility_fun.php*, cette fonction ne sembla pas exister
sous windows.
effectivemment, j'avais oublié que Windows n'était que très
partiellement POSIX !
Message d'erreur complet : *
"Fatal error*: Call to undefined function posix_uname() in
*E:\Web_Site\devfichadh\trunk\utility_fun.php* on line *28*"
Après consultation de la doc, je vous proose d'utiliser la constante
*PHP_OS* prévue à cet effet sous Php pour connaitre le système sous
lequel tourne Php comme indiqué ci après :
function separateur() {
// $uname = posix_uname();
$uname = strtoupper(substr(PHP_OS, 0, 3));
// if (strcmp($uname["sysname"], "Linux") == 0 or !
(strpos($uname["sysname"], "BSD") === False) or
(strcmp($uname["sysname"], "Darwin") == 0))
if ($uname=="WIN")
$filesep = "\\";
else
$filesep = "/";
return($filesep);
}
Après cette modif, je n'avais plus d'erreur a ce niveau, mais par
contre les séparateurs de chemin posent problème car si ceux qui sont
gérés par l'application sont bien convertis en fonction du besoin,
ceux qui sont gérés en interne dans la "base" (dans le cas de chemins
en relatif) ne sont pas convertis.
J'ai donc remodifié la fonction *separateur()* pour qu'elle retourne
toujours le même séparateur, et Oh miracle tout fonctionne
correctement, *ce qui confirme bien que l'on peut se passer de la
gestion des séparateurs de fichiers, ils sont gérés en interne par
APACHE.*
C'est très bien, il fallait effectivemment faire le test pour en avoir
le coeur net.
PHP est plus multi-plateforme que je ne le pensais.
Derniere fonction utilisée en local (sans "commit" à ce jour !)
function separateur() {
// $uname = posix_uname();
$uname = strtoupper(substr(PHP_OS, 0, 3));
// if (strcmp($uname["sysname"], "Linux") == 0 or !
(strpos($uname["sysname"], "BSD") === False) or
(strcmp($uname["sysname"], "Darwin") == 0))
if ($uname==="WIN")
// $filesep = "\\";
*$filesep = "/"*; // même séparateur que dans le monde Linux
ou Unix
else
$filesep = "/";
return($filesep);
}
Il ne reste plus qu'a faire la modif dans toutes les branches....Je
propoe de virer le branche "Bug5" devenue inutile.
Une petite remarque au passage : la révision 33 a été "commitée" dans
l'ensemble du dépôt SVN.
L'usage "canonique" de SVN (tel qu'utilisé par un grand nombre de gens)
recommande plutôt
de "pousser" les modifs :
- soit directement dans le tronc pour les petites modifications sans
risque de régression ou de conflit avec des branches en cours de
développement
- soit dans les branches dont on a la charge
- mais généralement pas dans les autres branches, puisque c'est la tâche
du "merge"
- et jamais dans les tags, puisqu'ils servent à établir la traçabilité
des versions "release", les tags étant des instantanés du tronc.
A bientôt,
Antoine
---