[英]Debug iconv_strlen error - PHP 5.5
我正在尝试使用Laravel和DomPDF将文档导出为PDF。 这适用于我的Mac,但不适用于登台或实时服务器。 错误如下:
我不知道这意味着什么,也找不到任何解决方案。
iconv_strlen(): Wrong charset, conversion from
UCS-4LE' is not allowed
iconv_strlen(): Wrong charset, conversion from
8位// IGNORE' iconv_strlen(): Wrong charset, conversion from
为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"/>
如果您需要任何进一步的信息来帮助我进行调试,请在评论中提问。
问题解决了。 谢谢BrianS。
这是通过重新安装mbstring解决的。
sudo yum --disablerepo="*" --enablerepo="remi*"
install php-mbstring*
sudo httpd -k restart
BrianS的解决方案确实解决了这个问题,但我认为解释造成原始问题的原因很有意思。
在最新版本的Cpdf
, Cpdf
类包含对mb_strlen()
大约30个调用,其中$encoding
参数设置为'8bit'
,这是mb_strlen()
的有效编码 。
Laravel的composer.json
需要patchwork/utf8
。 它提供了调用iconv_strlen()
的mb_strlen()
shim。
PHP通常使用glibc
或libiconv
作为其iconv
模块。 对于这两个库,可以使用iconv --list
显示支持的编码列表。
这些库都不支持名为'8bit'
的编码,这就是iconv_strlen()
抛出该错误的原因:
Wrong charset, conversion from '8bit//IGNORE' to 'UCS-4LE' is not allowed
安装mbstring
PHP模块会导致mb_strlen()
本机执行,因此不使用填充程序并且不会发生错误。
@rofavadeka一种解决方案是创建一个叉的的DOMPDF回购,并取代在每次使用的'8bit'
与由支持不同的8位的编码方式进行编码mb_strlen()
glibc
和libiconv
。
我在Hash:make()
遇到了这个错误Hash:make()
在播放我的数据库进行测试时。
在php-cli.ini
启用php_mbstring
php-cli.ini
导致它。
在Windows中,解决方案是:之前删除分号
extension=php_mbstring.dll
如果您使用WHM,则可以使用EasyApache进行重建。 在选择PHP版本后获得模块选项后,选择“穷举选项列表”按钮。 然后ctrl + f“mbstring”它应该出现。 选中复选框并重建。 它应该工作。
如果你在wamp或一些自定义堆栈,请记住你的wamp中的php
可能正在使用自定义php_something.ini
进行apache使用,因此即使wamp GUI显示mbstring
已打开 (取消注释)仍然安静可能在实际的php.ini
文件( True Story )中注释掉(禁用/ 关闭 )相同的行。
解决方案 : - 导航到
wamp dir > bin > php > phpx.x.x >
在这个目录中你会发现各种命名略有不同的.ini
文件,我正在使用php_uwamp.ini
作为堆栈但是对于CLI
, php
正在使用名为php.ini
的相邻文件。
这让我长时间拉毛,以为它可能对某人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.