簡體   English   中英

調試iconv_strlen錯誤 - PHP 5.5

[英]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 fromUCS-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的解決方案確實解決了這個問題,但我認為解釋造成原始問題的原因很有意思。

最新版本CpdfCpdf類包含對mb_strlen()大約30個調用,其中$encoding參數設置為'8bit' ,這是mb_strlen()有效編碼

Laravel的composer.json需要patchwork/utf8 它提供了調用iconv_strlen()mb_strlen() shim。

PHP通常使用glibclibiconv作為其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() glibclibiconv

我寫了一個腳本來確定哪些編碼是合適的。 這是glibclibiconv腳本的輸出。 合適的編碼是:

我在Hash:make()遇到了這個錯誤Hash:make()在播放我的數據庫進行測試時。

php-cli.ini啟用php_mbstring php-cli.ini導致它。

在Windows中,解決方案是:之前刪除分號

 extension=php_mbstring.dll

如果您使用WHM,則可以使用EasyApache進行重建。 在選擇PHP版本后獲得模塊選項后,選擇“窮舉選項列表”按鈕。 然后ctrl + f“mbstring”它應該出現。 選中復選框並重建。 它應該工作。

如果你在wamp或一些自定義堆棧,請記住你的中的php可能正在使用自定義php_something.ini進行apache使用,因此即使 GUI顯示mbstring打開 (取消注釋)仍然安靜可能在實際的php.ini文件( True Story )中注釋掉(禁用/ 關閉 )相同的行。

解決方案 : - 導航到

wamp dir > bin > php > phpx.x.x >

在這個目錄中你會發現各種命名略有不同的.ini文件,我正在使用php_uwamp.ini作為堆棧但是對於CLIphp正在使用名為php.ini的相鄰文件。

這讓我長時間拉毛,以為它可能對某人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM