簡體   English   中英

致命錯誤:調用未定義的 function mb_detect_encoding()

[英]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的支持,如下所示:

mb_string

MySQL

mysqli

也安裝 gd 庫。

檢查此鏈接http://www.php.net/manual/en/mbstring.installation.php

有一種比重新編譯 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"

刪除此擴展程序的注釋

  • 擴展名=php_mbstring.dll
  • 擴展名=php_mysqli.dll

重啟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.

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