[英]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.