-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
erreur "call to undefined function mb_check_encoding" #47
Comments
L'utilisation de la fonction mb_check_encoding est bien nouvelle (depuis version 2018-05-10). Elle est présente depuis les versions PHP 4 >= 4.4.3, PHP 5 >= 5.1.3, PHP 7. Pour te dépanner en attendant la correction, tu peux commenter les lignes comme suit dans le code // Return in case of invalid topic
if(!ctype_print($msgTopic) || empty($topicContent)) {
// if (!mb_check_encoding($msgTopic, 'ASCII'))
// $msgTopic = strtoupper(bin2hex($msgTopic));
log::add('jMQTT', 'warning', 'Message skipped: "' . $msgTopic . '" is not a valid topic');
return;
}
// Return in case of invalid payload (only ascii payload are supported) - fix issue #46
//if (!mb_check_encoding($msgValue, 'ASCII')) {
// log::add('jMQTT', 'warning', 'Message skipped: payload ' . strtoupper(bin2hex($msgValue)) . ' is not //valid for topic ' . $msgTopic);
// return;
//} |
pour PHP je suis en 7.0.27-0+deb9u1 donc ca doit pas être ça. |
Pourtant c'est ce que dis le message d'erreur: As tu la possibilité de tester le contournement indiqué précédemment pour vérifier? |
Je suis occupé de modifier la class, je retrouve 2 fois la fonction mb_check_encoding dans le code, je commente les deux ? |
Ok, j'ai commenté que la deuxième occurrence, la première on y passe pas tant qu'on a pas un topic invalide, je vérifie ce que ça donne. |
Effectivement, 2 occurrences à commenter (voir message corrigé ci-dessus), même si tu as raison, la première n'est pas exécutée si le topic est valide. |
Donc le "seul problème" est que la fonction mb_check_encoding n'est pas présente sur ton système. |
Oui il me semble, le reste fonctionne actuellement. |
J'ai trouvé, la fonction mb_check_encoding vient de la librairie mbstring qui n'est pas une librairie installée par défaut. |
La fonction En poursuivant l'investigation, on trouve que la perte de configuration se produit lorsque la payload est enregistrée, via le code suivant de la classe jMQTTCmd qui étend la classe cmd: $this->setConfiguration('value', $value); Pour le mettre en évidence, le code suivant: log::add('jMQTT', 'debug', '$this->configuration);
$this->setConfiguration('value', $value);
log::add('jMQTT', 'debug', '$this->configuration);
donne les traces:
L'analyse du core Jeedom montre que le problème se produit dans la fonction Donc la solution pour vérifier qu'une payload est valide est de s'assurer qu'elle peut être encodée JSON, ce qui donne la fonction suivante ajoutée dans la classe jMQTTCmd: public static function isConfigurationValid($value) {
return (json_encode(array('v' => $value), JSON_UNESCAPED_UNICODE) !== FALSE);
} |
Suite message de meute sur le forum:
The text was updated successfully, but these errors were encountered: