10
votes

Erreur de débogage iconv_strlen - PHP 5.5

J'essaie d'exporter un document sur PDF à l'aide de Laravel & Dompdf. Cela fonctionne sur mon Mac, mais pas sur la mise en scène ou le serveur en direct. Erreur comme suit:

Je n'ai aucune idée de ce que cela signifie, et je ne trouve aucune solution.

iconv_strlen (): mauvais charset, conversion de 8bit // ignore 'to ucs-4le 'n'est pas autorisé xxx

J'ai essayé d'ajouter ce qui suit à .htaccess xxx

J'ai essayé d'ajouter ce qui suit au sommet de la vue que j'essaie de générer le PDF pour: xxx

Si vous avez besoin d'informations supplémentaires pour m'aider Débogage, s'il vous plaît demander aux commentaires.


4 commentaires

On dirait que le problème est dans la cale de compatible mbstring fournie par patchwork. C'est à dire. Votre serveur n'a pas de mbstring activé et quelque chose dans le shim ne fonctionne pas très bien comme prévu. Cela aiderait à savoir ce qui appelle la fonction mb_strlen . Pouvez-vous obtenir une trace de pile?


Problème résolu. Merci Brians. Problème résolu par réinstaller la mbstring. sudo yum -disablepo = "*" --enablerepo = "remi *" Installez php-mbstring * sudo httpd -k redémarrer


^^ Vous devriez faire une solution en répondant à votre propre question. Pouvez-vous également expliquer comment vous exécutez ce processus.


@ Gravy J'ai eu le même problème et mettez à jour PHP-Mbstring ici le résolu ici. Vous devriez poster une réponse à votre question avec ce que vous avez fait pour le résoudre!


5 Réponses :


9
votes

problème résolu. Merci Brians.

Ceci a été résolu en réinstallant la mbstring. xxx


0 commentaires

4
votes

La solution de Brians résout en effet le problème, mais je pensais que ce serait intéressant d'expliquer ce qui a causé le problème initial.

dans le Dernière version de DompDF , CPDF classe contient environ 30 appels vers mb_strlen () avec le paramètre $ défini sur '8 bits' , qui est un codage valide pour MB_strlen () .

compositeur.json Nécessite patchwork / utf8 . Il fournit le mb_strlen () shim quels appels iconv_strlen () .

php utilise généralement glibc ou libiconv pour son iconv module. Pour les deux bibliothèques, la liste des codages pris en charge peut être affiché en utilisant iconv -list .

aucune de ces bibliothèques ne prend en charge un codage appelé '8bit' , c'est pourquoi iconv_strlen () jette cette erreur: xxx

Installation du module MBP (code> PHP Module cause MB_strlen () à exécuter de manière nativement, Donc, la cale n'est pas utilisée et l'erreur ne se produit pas.

Mise à jour

@rofavadeka Une solution consiste à créer un Fourchette de la DOMPDF Repo et remplacez toutes les utilisations de '8bit' codage avec un codage différent à 8 bits qui est supporté par mb_strlen () , glibc et libiconv .

J'ai écrit un script pour déterminer quels codages conviennent. Voici la sortie du script pour glibc et Libiconv . Les codages appropriés sont:


1 commentaires

Il y a donc un moyen de changer le codage «8 bits» ou de contourner ce problème? Avoir le problème samen, mais sur l'hébergement partagé, si malheureusement, je ne peux pas simplement réinstaller pour résoudre le problème! J'espère que vous pourrez me signaler dans la bonne direction.



3
votes

Je reçois cette erreur dans hachage: make () pendant l'ensemencement mon dB pour tester.

Activer php_mbstring dans php-cli.ini < / Code> l'a causé.

sous Windows La solution est la solution: retirez le point-virgule avant xxx


1 commentaires

Voulez-vous dire, dans php.ini ?



0
votes

Si vous utilisez WHM, vous pouvez utiliser Easyapache pour reconstruire. Une fois que vous avez obtenu les options de modules après avoir sélectionné votre version de PHP, sélectionnez le bouton "Liste des options exhaustives". Ensuite, ctrl + f "mbstring" et il devrait venir. Marquez la case à cocher et reconstruire. Cela devrait fonctionner.


0 commentaires

0
votes

Si vous êtes sur WAMP ou une pile personnalisée, rappelez-vous que le php dans votre peut utiliser une personnalisation php_something.ini pour l'utilisation de Apache, en raison de laquelle même si le interface graphique montre que mbstring est sur < / STRUT> (NOTAMMENTÉ) TOUJOURS SON TEMPORT POSSIBLE possible que la même ligne soit commentée (Désactivé / OFF ) dans le fichier php.ini ( véritable histoire < /quel>).

Solution xxx

dans ce répertoire, vous trouverez divers fichiers .ini nommé légèrement différemment, le mien utilisait php_uwamp.ini pour la pile mais pour le cli , php utilisait le fichier adjacent nommé php.ini .

Ceci Je m'avais tiré des poils pendant une longue distance, pensais que cela pourrait aider quelqu'un.


0 commentaires