Je me suis donc très rapidement douté que PHP 5.3.1 était responsable de mes déboires.
Je suis donc repassé en mode console et j'ai éxécuté wmiirc.php en ligne de commande afin de comprendre le problème.
J'ai alors eu droit à un message d'erreur m'informant qu'une variable était indéfinie dans $_ENV
, la variable qui contient toutes les variables d'environnement du contexte d'éxécution de PHP.
J'ai donc creusé un peu, et je me suis rendu compte que $_ENV
était un tableau vide !
Curieux, j'ai cherché à connaître le contenu de $_SERVER
, et à ma grande surprise, il contenait entre autre le contenu habituel de $_ENV
.
Comme je suis passé à PHP 5.3.1 en suivant une méthode non officielle, j'ai commencé par me dire que le problème venait de l'installation.
Manque de chance, $_ENV
était également un tableau vide sur la machine sous linux d'un de mes collégues avec pourtant un PHP 5.3.1 installé avec les binaires officiels de sa distribution.
Comme une recherche sur bugs.php.net n'a pas plus éclairé ma lanterne, j'ai fais quelques recherche sur Internet, et par recoupement, j'ai découvert que la directive variables_order
de mon php.ini
était en cause.
En effet, alors que le changelog ne le mentionne pas, il semble que depuis PHP 5.3, cette directive ne contienne plus la valeur E
par défaut qui déclenche l'initialisation de $_ENV
.
De plus, le manuel de PHP m'a également appris qu'il était normal que $_SERVER
contienne également les variables d'environnement, du moins en CGI et FastCGI.
Apparament, c'est également valable en CLI.
Bref, j'ai résolu mon problème en utilisant la fonction getenv()
, conformément aux commentaires figurant dans le php.ini
.
Une fois la modification effectuée et une méthode de classe renommée car elle entrait en conflit avec le mot-clef goto
introduit par PHP 5.3 et qui est clairement documenté et abondament commenté, j'ai récupéré un gestionnaire de fenêtre pleinement fonctionnel.
Et non, je n'écrirais pas ma phrase traditionnelle au sujet de PHP, du moins pour cette fois, car quoiqu'en pense certain, je ne suis pas Jean-Pierre Coffe !PHP, c'est de la merde
3 réactions
1 De Mickaël - 15/12/2009, 19:54
ahahaha ! Bien vu JP
2 De brice - 15/12/2009, 20:41
Je trouve ça assez ironique finalement que tu utilises un windows manager géré par un script PHP
Merci de ton retour d'expérience.
3 De mageekguy - 16/12/2009, 08:57
@brice:
Ironique parce que je dis que PHP est très loin d'être parfait ?
Plus sérieusement, il se trouve que c'est un langage que je connais très bien et avec lequel j'arrive à faire tout ce que je veux (même si je commence à en voir les limites), et c'est d'ailleurs pour cela que je me permet d'avoir un regard critique à son sujet.
De plus, l'utiliser pour gérer un gestionnaire de fenêtre est un challenge suffisament fou de mon point de vue pour que je sois obligé de relever, ne serait ce que pour son aspect technique.
J'en ai d'ailleur tiré un enseignement : il est possible de faire tourner un script PHP en permanence sans aucun problème, aucune fuite de mémoire à déplorer :).