我正在尝试使用Laravel& amp ;;将文档导出为PDF。 DOMPDF。这适用于我的Mac,但不适用于登台或实时服务器。错误如下:
我不知道这意味着什么,也找不到任何解决方案。
iconv_strlen(): Wrong charset, conversion from
8位// IGNORE'到UCS-4LE' is not allowed
open: /srv/www/html/vendor/patchwork/utf8/class/Patchwork/PHP/Shim/Mbstring.php
return true;
}
static function mb_strlen($s, $encoding = INF)
{
INF === $encoding && $encoding = self::$internal_encoding;
return iconv_strlen($s, $encoding . '//IGNORE');
}
我尝试将以下内容添加到.htaccess
AddDefaultCharset UTF-8
我尝试将以下内容添加到视图的顶部,我正在尝试为其生成pdf:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
如果您需要任何进一步的信息来帮助我进行调试,请在评论中提问。
答案 0 :(得分:9)
问题解决了。谢谢BrianS。
这是通过重新安装mbstring解决的。
sudo yum --disablerepo="*" --enablerepo="remi*"
install php-mbstring*
sudo httpd -k restart
答案 1 :(得分:4)
BrianS的解决方案确实解决了这个问题,但我认为解释导致原始问题的原因会很有趣。
在latest release of dompdf中,
Cpdf
课程。valid encoding for mb_strlen()
包含mb_strlen()
$encoding
参数设置为'8bit'
的大约30个来电,即{。}}
composer.json
Laravel的patchwork/utf8
需要iconv
。它提供mb_strlen()
垫片
它调用iconv_strlen()
。
PHP通常会为displayed模块使用glibc
或libiconv
。
对于这两个库,支持的编码列表可以是
fork使用iconv --list
。
这两个库都不支持名为'8bit'
的编码,这就是为什么iconv_strlen()
抛出那个错误:
Wrong charset, conversion from '8bit//IGNORE' to 'UCS-4LE' is not allowed
安装mbstring
PHP模块会导致mb_strlen()
本机执行,
因此不使用垫片并且不会发生错误。
@rofavadeka一个解决方案是创建一个
dompdf
a script回购,并取代每次使用
'8bit'
编码使用不同的8位编码
mb_strlen()
,glibc
和libiconv
。
答案 2 :(得分:3)
在播放我的数据库进行测试期间,我在Hash:make()
中收到了该错误。
在php_mbstring
中启用php-cli.ini
会导致它。
在Windows中,解决方案是:在
之前删除分号 extension=php_mbstring.dll
答案 3 :(得分:0)
如果您使用WHM,则可以使用EasyApache进行重建。在选择PHP版本后获得模块选项后,选择&#34;穷举选项列表&#34;按钮。然后按ctrl + f&#34; mbstring&#34;它应该出现。选中复选框并重建。它应该工作。