niko38190 Posté(e) le 25 novembre 2012 Partager Posté(e) le 25 novembre 2012 (modifié) Bonjour, Je rencontre actuellement un problème bizzar sur mon DS1512+ qui m'empéche d'installer le Framework Symfony. En cherchant un peu dans les fichiers de Symfony, je me suis rendu compte que le problème venait d'une ( ou plusieurs ) Constante pré-définies de PHP. En effet, la constante INF ne semble pas correctement définie sur mon nas et elle est apparement indispensable au bon fonctionnement de Symfony. Ce qui est vraiment étrange, c'est que j'ai un autre Nas (DS207) avec le même firmware (4.1) donc exactement la même version de PHP et d'apache et pourtant, je n'ai pas ce problème... Pour savoir si vous avez ce problème sur votre environnement, utilisez ce script : <?php $test = INF; var_dump($test); <? Si ce script affiche "float(0)" vous avez le même problème, si il affiche float(INF) c'est ok. Bref, si vous avez la moindre idée de la façon de corriger ce problème, n'hésitez pas à repondre . Merci et bonne soirée Modifié le 25 novembre 2012 par niko38190 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
psuken Posté(e) le 25 novembre 2012 Partager Posté(e) le 25 novembre 2012 Hello, moi j'ai float(INF). Ne peux-tu pas en définir la valeur dans php.ini ou via ini_set() ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
niko38190 Posté(e) le 25 novembre 2012 Auteur Partager Posté(e) le 25 novembre 2012 (modifié) Alors j'ai déjà essayé de mettre ces lignes au début de mon script de test : ini_set('INF', 'test'); et define('INF' , 'test'); Mais ça n'a absolument rien changer, la sortie affiche toujours float(0). Et pour définir les constante directement depuis le php.ini je ne sais pas vraiment comment m'y prendre, je ne sais même pas si c'est possible... Un mec semble avoir le même problème ici : http://stackoverflow...-has-value-zero Ici aussi : https://groups.google.com/forum/?fromgroups=#!topic/silex-php/peZqxXhC0yw Modifié le 25 novembre 2012 par niko38190 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
niko38190 Posté(e) le 26 novembre 2012 Auteur Partager Posté(e) le 26 novembre 2012 Bon, je viens de faire un reset de mon synology et j'en ai profité pour mettre à jour le firmware en 4.1-2661. Hélas, j'ai toujours le même problème, impossible d'installer Symfony2... Si quelqu'un possédant un DS1512+ passe sur ce Topic, merci de faire le test avec mon script, ça me rassurerais de savoir que je ne suis pas le seul à avoir ce bug... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mike913 Posté(e) le 27 novembre 2012 Partager Posté(e) le 27 novembre 2012 Bonjour, Pour tester valablement si INF est défini utilise plutôt ce code: <?php if (!defined('INF')) { //define('INF', 1.8e307); echo 'non défini<br>'; } else { echo -log(0).'<br>'; } ?> 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
DjMomo Posté(e) le 27 novembre 2012 Partager Posté(e) le 27 novembre 2012 Bonjour, Pour tester valablement si INF est défini utilise plutôt ce code: <?php if (!defined('INF')) { //define('INF', 1.8e307); echo 'non défini<br>'; } else { echo -log(0).'<br>'; } ?> Sur mon DS1512+ en 4.1 build 2636 cela me sort "INF", donc défini. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mike913 Posté(e) le 27 novembre 2012 Partager Posté(e) le 27 novembre 2012 Je crois que son problème vient du fait qu'il attend une valeur numérique, alors que dans son cas la constante INF est une chaine de caractères. Ce qui explique que son script: $test = INF; var_dump($test); renvoie float(0) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mike913 Posté(e) le 27 novembre 2012 Partager Posté(e) le 27 novembre 2012 Sur mon DS-712+ en version 4.1 # 2661 le résultat est float(0) Sur mon DS-209+ II en version 4.1 # 2661 le résultat est float(INF) et comme on ne peux pas redéfinir une constante ... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
psuken Posté(e) le 27 novembre 2012 Partager Posté(e) le 27 novembre 2012 C'est la même version de PHP sur les deux serveurs ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
niko38190 Posté(e) le 27 novembre 2012 Auteur Partager Posté(e) le 27 novembre 2012 (modifié) Le script de Mike913 me renvoi "INF" donc il semblerait que cette constante soit défini. Le problème c'est que c'est la seule différence que j'ai trouvé entre mon DS1512+ et mon DS207 qui pourrait peut-être expliquer les problèmes rencontrés. Pour info, voici le message d'erreur que j'ai à l'installation de Symfony : preg_match(): Compilation failed: unmatched parentheses at offset 41 in /volume2/web/Symfony/app/cache/dev/appdevUrlMatcher.php line 154 Ligne 154 sur le DS1512+ (celui qui bug): if (0 === strpos($pathinfo, '/_configurator/step') && preg_match('#^/_configurator/step(?:/(?<index>[^/]+))?)?$#s', $pathinfo, $matches)) { Sur mon DS209 cette ligne est différente est ne pose pas de probléme : if (0 === strpos($pathinfo, '/_configurator/step') && preg_match('#^/_configurator/step/(?<index>[^/]+)$#s', $pathinfo, $matches)) { Le fichier appdevUrlMatcher.php est généré par Symfony au moment de l'installation et comme vous pouvez le voir ici, les regexp générés sont un peu différentes. Au début je pensais que c'était à cause d'une version trop veille de PCRE sur mon DS1512+, mais pourtant c'est exactement la même version qui équipe le DS209... J'en ai donc conclu en cherchant un peu sur la toile que celà pouvait étre lié à cette constante prédéfinie. Je rappel que mes 2 syno utilisent la version 4.1-2661 de DiskStation. Voici leurs phpinfo() : DS1512+ : http://nikoserveur.com/test.php DS209 : http://nikoserveur.com:2000/test.php Merci beaucoup pour votre aide Modifié le 27 novembre 2012 par niko38190 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PiwiLAbruti Posté(e) le 27 novembre 2012 Partager Posté(e) le 27 novembre 2012 Le script de Mike913 me renvoi "INF" donc il semblerait que cette constante soit défini. Justement non, PHP retourne le nom de la constante si elle n'est pas définie. Par exemple : var_dump('NASFORUM'); retourne string( "NASFORUM" Maintenant si la constante INF doit retourner un float(0), il suffit de la définir. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
psuken Posté(e) le 27 novembre 2012 Partager Posté(e) le 27 novembre 2012 (modifié) Dans la ligne qui plante, il y a une parenthèse fermante de plus qu'il n'y en a d'ouvrante. D'ou l'erreur. Par contre je ne suis pas un expert des expressions régulières donc je ne me sens pas en mesure de débogger cette ligne... Je vais chercher un peu quand même Edit : en attendant essaye de remplacer la ligne qui plante par celle qui fonctionne... Modifié le 27 novembre 2012 par psuken 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
niko38190 Posté(e) le 27 novembre 2012 Auteur Partager Posté(e) le 27 novembre 2012 (modifié) Le problème psuken c'est que toutes les Regexp générés par Symfony posent problème, c'est pour cette raison que je veux trouver le fond du problème afin de toutes les régénérer correctement et non pas seulement celle-ci. Sinon PiwiLAbruti, la constante INF est bien définie mais pas correctement, enfin pas comme sur la majorité des environnement qui n'ont pas de problème avec Symfony... Et comme tu le sais surement, ce n'est pas vraiment correcte (Voir peut-être impossible) de redéfinir une constante. Edit : J'ai déjà essayer de remplacer la regexp de mon 1512+ par celle de mon DS209 et en effet ça ne pose plus de problème, mais le problème c'est que je dois faire ça pour chaque regexp, et j'aurai ce problème à chaque fois que symfony m'en générera une... J'essai donc plutôt de trouver la raison des cette "mauvaise génération de regexp" plutôt que de réparer les dégâts. @Mike913 : Le DS1512+ et le DS712+ sont très proches, je pense que si tu essaies d'installer Symfony sur ton DS712+ tu seras confronté au même problème que moi, ça peut-être intéressant de vérifier... Modifié le 27 novembre 2012 par niko38190 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PiwiLAbruti Posté(e) le 27 novembre 2012 Partager Posté(e) le 27 novembre 2012 Et comme tu le sais surement, ce n'est pas vraiment correcte (Voir peut-être impossible) de redéfinir une constante. Je ne parlais pas de la redéfinir, mais de simplement la définir. Si "INF" est retourné, c'est que la constante du même nom n'est pas définie. D'où la possibilité de faire un define('INF',0); 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
niko38190 Posté(e) le 27 novembre 2012 Auteur Partager Posté(e) le 27 novembre 2012 Le problème c'est que INF est définie mais vaut 0 sur mon DS1512+, donc impossible de lui donner une valeur. Mais bon au final et comme dit un peu plus haut, je ne sais pas vraiment si mon problème de regexp est directement lié à ce problème de constante. C'est possible qu'il n'y ai aucun rapport entre les deux mais en tous cas j'ai constaté dans mon entourage que tous les environnement PHP qui affiche INF = float(0) rencontre l'erreur des regexp mal générées dans Symfony. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
niko38190 Posté(e) le 27 novembre 2012 Auteur Partager Posté(e) le 27 novembre 2012 Bon j'ai trouver un moyen de contourner le problème . Pour ceux qui souhaitent installer Symfony sur un Nas rencontrant ce problème, il faut éditer le fichier RouteCompiler.php qui se trouve a l'emplacement suivant : Votre-dossier-webDossier-de-SymfonyvendorsymfonysymfonysrcSymfonyComponentRoutingRouteCompiler.php Trouvez la ligne suivante (ligne 71 dans la version actuelle de Symfony2) : // find the first optional token $firstOptional = INF; et remplacez la par : // find the first optional token $firstOptional = -log(0); Videz le dossier appcache et recommencez l'installation, tout devrait fonctionner. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 27 novembre 2012 Partager Posté(e) le 27 novembre 2012 Quelqu'un a posté un ticket à Syno pour ça ? Je pense qu'un comportement différent selon le NAS n'est pas le comportement attendu. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
niko38190 Posté(e) le 27 novembre 2012 Auteur Partager Posté(e) le 27 novembre 2012 J'ai créer un ticket sur cette page ce lundi : https://myds.synology.com/support/support_form.php?lang=fre Je ne sais pas si c'est la page adéquate mais je n'ai pas trouver autre chose... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mike913 Posté(e) le 28 novembre 2012 Partager Posté(e) le 28 novembre 2012 Justement non, PHP retourne le nom de la constante si elle n'est pas définie. Par exemple : var_dump('NASFORUM'); retourne string( "NASFORUM" Maintenant si la constante INF doit retourner un float(0), il suffit de la définir. Justement on ne peut pas la redéfinir puisqu' elle est deja définie voir mon script, et elle ne renvoie pas un float() mais une chaine de caractéres: 'INF' <?php if (!defined('INF')) { //define('INF', 1.8e307); echo 'non défini<br>'; } else { echo -log(0).'<br>'; // renvoie 'INF' } ?> 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mike913 Posté(e) le 28 novembre 2012 Partager Posté(e) le 28 novembre 2012 Bon j'ai trouver un moyen de contourner le problème . Pour ceux qui souhaitent installer Symfony sur un Nas rencontrant ce problème, il faut éditer le fichier RouteCompiler.php qui se trouve a l'emplacement suivant : Votre-dossier-webDossier-de-SymfonyvendorsymfonysymfonysrcSymfonyComponentRoutingRouteCompiler.php Trouvez la ligne suivante (ligne 71 dans la version actuelle de Symfony2) : // find the first optional token $firstOptional = INF; et remplacez la par : // find the first optional token $firstOptional = -log(0); Videz le dossier appcache et recommencez l'installation, tout devrait fonctionner. Bonjour, Je me suis demandé pourquoi un script veux connaitre la valeur de l' infini, puis j' ai compris qu'il voulait savoir la valeur maximum que peux prendre un float() et il serait plus judicieux de définir $firstOptional avec une valeur finie. // find the first optional token $firstOptional = 1.8e307; 1.8e307 étant proche de la valeur maximum pouvant être attribuée à un float() 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PiwiLAbruti Posté(e) le 28 novembre 2012 Partager Posté(e) le 28 novembre 2012 Justement on ne peut pas la redéfinir puisqu' elle est deja définie voir mon script, et elle ne renvoie pas un float() mais une chaine de caractéres: 'INF' Merci de tout lire : 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
niko38190 Posté(e) le 28 novembre 2012 Auteur Partager Posté(e) le 28 novembre 2012 Voici la réponse de Synology Hi Nicolas, Thanks for your feedback. Your issue is reported to our engineer for the future checking and fixing. To thank you, we would like to send you a special gift from Taiwan. If you don't mind, please kindly provide your postal address and telephone number for delivery and we will arrange the parcel for you immediately: Ils vont surement m'envoyer un Nas tout neuf ( l’espoir fait vivre ). 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 28 novembre 2012 Partager Posté(e) le 28 novembre 2012 Désolé de te décevoir, mais tu vas avoir un beau T-Shirt Synology 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
niko38190 Posté(e) le 28 novembre 2012 Auteur Partager Posté(e) le 28 novembre 2012 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mike913 Posté(e) le 28 novembre 2012 Partager Posté(e) le 28 novembre 2012 Merci de tout lire : C' est plutôt doit qui devrait tout lire, car INF est bien défini dans les 2 Cas. <?php if (!defined('INF')) { //define('INF', 1.8e307); echo 'non défini<br>'; } else { echo -log(0).'<br>'; // [b]renvoie 'INF' et prouve bien que INF est déjà défini[/b] } ?> 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.