Aller au contenu

Extension "intl" Du Php De La Diskstation Non Fonctionnel


Messages recommandés

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 !

Lien vers le commentaire
Partager sur d’autres sites

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 !

Lien vers le commentaire
Partager sur d’autres sites

  • 7 mois après...

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é par ALDUS
Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois aprè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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.