- 1
[Opened] Problème / Bug
Posted by Glosialabolas on 03/22/2009 13:19
Bonjour
Nouvel utilisateur de jelix, je commence à développer une nouvelle version de mon site avec jelix. En local, tout fonctionne, j'ai voulu faire un test sur mon serveur de production sous windows (et oui on a pas toujours le choix :'( ) et j'ai rencontré un problème à ce moment.
PHP Fatal error: require_once() [function.require]: Failed opening required '\NAS\WEB\Inetpub\wwwroot\nom_du_site\jelix\lib\jelix/plugins/tpl/html/function.jurl.php' (include_path='.;E:\php5\pear') in \\NAS\WEB\Inetpub\wwwroot\nom_du_site\jelix\temp\nom_de_l_appli\compiled\templates\modules\nom_de_l_appli\menu_html_t.php on line 2
Donc après vérification des variables dans les fichiers tout était bon mais au moment de faire le require_once, problème. Vu le message d'erreur, j'ai rajouté un \ au début du require_once incriminé et la ça a fonctionné. (Sous windows les disques en réseaux nécessite deux anti-slash au début du chemin)
Pour le moment j'ai fais une correction (plutot un bidouillage) dans le fichier jTplCompiler.class.php
(Ligne 108 à 111 Fichier jTplCompiler.class.php (version dev))
$header ="<?php \n"; foreach($this->_pluginPath as $path=>$ok){ $header.=' require_once(\''.$path."');\n"; }
Modification :
$header ="<?php \n"; foreach($this->_pluginPath as $path=>$ok){ $header.=' require_once(\'\\'.$path."');\n"; }
Je sais, c'est vraiment pas beau, pas bien etc, mais étant un nouvelle utilisateur de ce framework, je ne me voyais pas plonger plus profondement dans le code de ce dernier pour le moment :)
Donc ai-je oublié quelque chose (dans les paramètres de mon application) ou est-ce un bug ?
[Opened] Re: Problème / Bug
Posted by laurentj on 03/23/2009 11:01
Salut,
Je n'en vois pas trop ce qu'il faut faire. Le chemin est construit par PHP. Si il faut corriger les bugs de php..
En tout cas, ta correction n'est pas la bonne : si tu bascule ton appli sur un serveur linux/macos, ça va te peter des erreurs dans tout les sens. De plus, le chemin en question n'est pas construit dans jTplCompiler, mais dans jConfigCompiler, qui se sert des chemins de base indiquées dans les constantes JELIX_APP_PATH (définie dans ton application.init.php) et LIB_PATH (définie dans le init.php de jelix), tout les deux faisant des dirname/realpath, donc chemins calculés par PHP.
- Solution radicale : arrêter d'utiliser ce système obsolète qu'est windows et ses syntaxes de chemin à la con :-). Tu verras, utiliser un linux ou macosx ralenti la chute des cheveux, redonne un poil soyeux, et fait disparaître tout stress :-))
- Solution pratique : n'utilise pas de disque réseau.
Tu peux toujours poster un ticket sur developer.jelix.org, mais pour le moment, je ne vois pas trop comment le corriger : comment savoir que le repertoire en question est un disque reseau ou pas ?
Ce qui est étrange, c'est que par opendir et cie (dans jConfigCompiler par ex), avec les mêmes chemins, il arrive à lire les fichiers..
- 1