[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








---


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/