ALDUS Posté(e) le 19 novembre 2011 Partager Posté(e) le 19 novembre 2011 Bonsoir ! J'ai installé le module "intl", j'ai vérifié qu'il était bien compilé mais dès que j'essaie de l'utiliser, il me crée des NULL au lieu des objets IntlDateFormatter ce qui fait planter la suite des opérations. J'ai recherché les codes erreur et j'obtiens ce message inquiétant : "U_MEMORY_ALLOCATION_ERROR". 1 2 3 4 5 6 7 8 9 10 11 echo "Set locale_set_default()<BR/>\n"; locale_set_default('fr'); echo "intl_get_error_message() : "; echo var_dump(intl_get_error_message())."<BR/>\n<BR/>\n"; echo '$f = new IntlDateFormatter'."<BR/>\n"; $f = new IntlDateFormatter('fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL); echo "intl_get_error_message() : "; echo var_dump(intl_get_error_message())."<BR/>\n<BR/>\n"; Citation: Set locale_set_default() intl_get_error_message() : string(12) "U_ZERO_ERROR" $f = new IntlDateFormatter intl_get_error_message() : string(73) "datefmt_create: date formatter creation failed: U_MEMORY_ALLOCATION_ERROR" Quelqu'un a-t-il ce module (courant) opérationnel avec la version à jour de DSM (3.2 - 1944) ? Ou au contraire, quelqu'un a-t-il eu des difficulté avec ce module d'extension ? Quelle solution a-t-il trouvé ? Merci d'avance pour toute piste pour résoudre ce casse-tête qui me coince depuis plusieurs jours ! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PatrickH Posté(e) le 19 novembre 2011 Partager Posté(e) le 19 novembre 2011 Tu es sur que le PHP du syno a été compilé avec cette option ? j'ai quelques doute !? Patrick 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
ALDUS Posté(e) le 24 novembre 2011 Auteur Partager Posté(e) le 24 novembre 2011 Je le crois ! En effet, j'ai sélectionné le module "intl" dans le "panneau de configuration > Services web > Paramètres PHP > Sélectionner PHP extensions" et j'ai simplement validé "OK". Par ailleurs, j'ai lancé le code suivant : echo "<BR/>n<BR/>nTest IntlDateFormatter !<BR/>n<BR/>n"; if (!extension_loaded('intl')) { die("intl n'est pas disponible ! Vous devez en activer le support en ajoutant cette extension et/ou en recompilant PHP."); } else { echo 'Extension intl trouvée.'."<BR/>n<BR/>n"; } echo "intl_get_error_message() : "; echo var_dump(intl_get_error_message())."<BR/>n<BR/>n"; echo 'memory_get_usage() :'.memory_get_usage()."<BR/>n"; echo "La fonction 'datefmt_create' existe-t-elle ? : "; if (function_exists('datefmt_create')) { echo "oui !<BR/>n"; } else { echo "non !<BR/>n"; } echo "Set locale_set_default()<BR/>n"; locale_set_default('fr'); echo 'memory_get_usage() :'.memory_get_usage()."<BR/>n"; echo "intl_get_error_message() : "; echo var_dump(intl_get_error_message())."<BR/>n<BR/>n"; $coll = collator_create( 'en_RU' ); echo var_dump(intl_get_error_message())."<BR/>n<BR/>n"; //Résultat -> string(65) "collator_create: unable to open ICU collator: U_FILE_ACCESS_ERROR" //$err_code = collator_get_error_code( $coll ); printf( "Symbolic name for %d is %sn.", $err_code, intl_error_name( $err_code ) ); echo '$f = new IntlDateFormatter'."<BR/>n"; $f = new IntlDateFormatter('fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL); echo "intl_get_error_message() : "; echo var_dump(intl_get_error_message())."<BR/>n<BR/>n"; echo 'type de $f : '.gettype($f)."<BR/>n<BR/>n"; echo 'memory_get_usage() :'.memory_get_usage()."<BR/>n"; echo $f->format(time())."<BR/>n<BR/>n"; Ce qui me donne comme résultat : Test IntlDateFormatter ! Extension intl trouvée. intl_get_error_message() : string(12) "U_ZERO_ERROR" memory_get_usage() :373288 La fonction 'datefmt_create' existe-t-elle ? : oui ! Set locale_set_default() memory_get_usage() :373368 intl_get_error_message() : string(12) "U_ZERO_ERROR" string(65) "collator_create: unable to open ICU collator: U_FILE_ACCESS_ERROR Symbolic name for 0 is U_ZERO_ERROR .$f = new IntlDateFormatter intl_get_error_message() : string(73) "datefmt_create: date formatter creation failed: U_MEMORY_ALLOCATION_ERROR" type de $f : NULL memory_get_usage() :373704 " Je m'oriente actuellement vers un problème au niveau de ICU : apparemment il est installé, version 4.4.1, dans un répertoire "/source" ('--with-icu-dir=/source/icu-4.4.1') que je ne trouve pas. Soit les fichiers ne sont pas ou pas bien installés, soit inls ne sont pas dans le bon répertoire "traditionnel". Bref, PHP n'arrive pas à les trouver, d'où l'échec d'une commande de "collation" avec un message "collator_create: unable to open ICU collator: U_FILE_ACCESS_ERROR". Maintenant, je ne sais pas en dire plus ni ne sait quoi faire ! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
ALDUS Posté(e) le 11 juillet 2012 Auteur Partager Posté(e) le 11 juillet 2012 (modifié) Bonjour ! 9 mois plus tard, je suis toujours l'heureux possesseur de cette maladie "orpheline" ... Les choses ont évolué car PHP 5.3.10 a maintenant "intl" intégré. Sauf ... que çà ne marche toujours pas !?!!?? Que faire, pliiiiiiiiiiiiiiiiiiiise ! P.S. je suis preneur de tests qui permettent de comprendre ce qui se passe je suis preneur d'idées je suis preneur de bypass (c'est pour utiliser Symfony 2) je suis même preneur d'incantations ou de granules d'homéopathie ou en core d'hypnose ... Modifié le 11 juillet 2012 par ALDUS 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
niko38190 Posté(e) le 1 octobre 2012 Partager Posté(e) le 1 octobre 2012 (modifié) Je suis également preneur... Modifié le 23 novembre 2012 par niko38190 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.