[英]Fatal error: Call to undefined function mb_detect_encoding()
我按照本教程嘗試設置 LAMP 后收到此錯誤,我發現自己在嘗試設置 phpmyadmin 后收到上述錯誤。
致命錯誤:調用未定義的 function mb_detect_encoding() in C:\WebServer\Apache\htdocs\phpmyadmin\libraries\php-gettext\gettext.inc on line 177
我聽從了這里的建議: PHP Fatal error when trying to access phpmyadmin mb_detect_encoding ,並進行了這些更改。
當我運行phpinfo()
時,我看到啟用了對 MySQL 和mb_string
的支持,如下所示:
也安裝 gd 庫。
有一種比重新編譯 PHP 更簡單的方法。 只需 yum 安裝所需的 mbstring 庫:
示例: 如何在 CentOS 6.2 上安裝 PHP mbstring
yum --enablerepo=remi install php-mbstring
哦,別忘了之后重新啟動 apache。
Mbstring 是一個非默認擴展。 這意味着它在默認情況下未啟用。 您必須使用配置選項顯式啟用模塊。
如果您的 php 版本是 7.0:
sudo apt-get install php7.0-mbstring
sudo service apache2 restart
如果您的 php 版本是 5.6:
sudo apt-get install php5.6-mbstring
sudo service apache2 restart
在 Windows 上打開文件 php.ini 並進行以下更改:
去掉注釋,指向ext目錄
; extension_dir = "./" -> extension_dir = "C:/Php/ext"
刪除此擴展程序的注釋
重啟apache服務
httpd -k 重啟
當我打開 php.ini 文件時,“extension_dir”行如下所示:
extension_dir = "C:/wamp/bin/php/php5.4.16/ext/"
我改為:
extension_dir = "C:\wamp\bin\php\php5.4.16\ext\"
它奏效了。
在 Windows / WAMP 下,GD2 擴展、MySQL 擴展或外部 dll/lib 似乎沒有任何 php_mbstring.dll 依賴項:
deplister.exe ext\\php_mbstring.dll
php5ts.dll,OK
MSVCR110.dll,OK
KERNEL32.dll,OK
deplister.exe ext\\php_gd2.dll
php5ts.dll,OK
USER32.dll,OK
GDI32.dll,OK
KERNEL32.dll,OK
MSVCR110.dll,OK
無論 php_mbstring 已經需要什么,它都是內置的(靜態編譯到 DLL 中)。
調用未定義的函數 mb_detect_encoding()
這個錯誤也是非常具體和確定的......
函數mb_detect_encoding()
沒有失敗,因為沒有加載 php_gd、php_mysql、php_mysqli 或其他擴展; 它只是沒有找到。
我猜所有被報告為有效的答案(對於 Windows / WAMP),也就是說要加載其他擴展,更改 php.ini extension_dir
路徑(如果這個路徑一開始是錯誤的,則不會加載任何擴展),等等,由於 a) 取消注釋extension = php_mbstring.dll
行,或 b) 重新啟動 Apache 或計算機(以使更改生效),因此工作更多。
在 Windows 上,大多數時候問題是 php_mbstring.dll 是:
被 Windows 阻止。 通過右鍵單擊它來取消阻止它,檢查屬性。
或者 PHP 無法加載 php_mbstring.dll 由於另一個版本被加載(例如,從一些不正確的 PHP DLL 安裝到 C:\\Windows\\system32)、某些版本不匹配、缺少運行時 DLL 等。檢查 Apache 和 PHP 的錯誤首先記錄文件以獲取線索。
更深入的答案在這里: 調用未定義的函數 mb_detect_encoding
如果您使用所有語言,您應該只使用英文版本的 phpmyadmin,您應該在 php.in 文件中啟用所有語言 mbstring.....只需在 php.in 中搜索 mbstring
對於 Fedora/centos/redhat:
yum install php-mbstring
然后重啟apache
問題也可能是 Apache 找不到 php.ini 如果您錯誤地設置了 PHPIniDir。 我的設置為:PHPIniDir "c:/php7" 但是,該文件夾實際上只是 "php" 線索是查看 phpinfo() 其中顯示:配置文件 (php.ini) 路徑 C:\\windows
我在 Ubuntu 17 上遇到了同樣的問題, Ispconfig
沒有處理任何類型的排隊操作,而且server.sh
命令也不起作用。 我檢查了操作系統升級后正在運行的 PHP 版本是 7.1,因此解決方案是鍵入:
apt-get install php7.1-mbstring
現在一切正常
希望這對一些人有所幫助,當我在 php.ini 文件中將路徑和擴展名添加到“docref_root”“docref_ext”時出現此錯誤,然后我將其注釋掉,這沒問題,但現在無法幫助我工作。
如果您的 php 版本是 7.2:
須藤 apt-get 安裝 php7.2-mbstring
須藤服務 apache2 重啟
PHP.INI XAMP5.6 > 就我而言,在更新 max_ 值時,我刪除了; max_input_time 默認值:-1(無限制)
撤消后一切正常。 ; 最大輸入時間; 默認值:-1(無限制)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.