WordPress 网站用支付宝当面付收款时出现“mb_detect_encoding()”致命错误如何解决?

文章首发于公众号【小白书签】:https://mp.weixin.qq.com/s/DJ2i8dmuMh1I6gXfDMjA5A

WordPress 网站 PHP 从 8.1 升级到 8.3 版本之后,发现用支付宝当面付收款时报错:

Fatal error: Uncaught Error: Call to undefined function mb_detect_encoding() in /www/wwwroot/www.1itao.com/wp-content/plugins/erphpdown/payment/f2fpay/aop/AopClient.php:962 Stack trace: #0 /www/wwwroot/www.1itao.com/wp-content/plugins/erphpdown/payment/f2fpay/aop/AopClient.php(363): AopClient->setupCharsets() #1 /www/wwwroot/www.1itao.com/wp-content/plugins/erphpdown/payment/f2fpay/f2fpay/service/AlipayTradeService.php(349): AopClient->execute() #2 /www/wwwroot/www.1itao.com/wp-content/plugins/erphpdown/payment/f2fpay/f2fpay/service/AlipayTradeService.php(204): AlipayTradeService->aopclientRequestExecute() #3 /www/wwwroot/www.1itao.com/wp-content/plugins/erphpdown/payment/f2fpay.php(124): AlipayTradeService->qrPay() #4 {main} thrown in /www/wwwroot/www.1itao.com/wp-content/plugins/erphpdown/payment/f2fpay/aop/AopClient.php on line 962

根据提示信息分析,这是由于 PHP 运行环境中缺少 mbstring 扩展(Multi-Byte String),而 mb_detect_encoding() 是这个扩展提供的函数之一。

那么,如何安装并启用 mbstring 扩展呢?

1. 如果您使用了宝塔面板:

  • 打开宝塔面板 → 软件商店 → 找到你当前使用的 PHP 版本(如 PHP 8.3)
  • 点击“设置” → “安装扩展”
  • 找到 mbstring,点击“安装”

WordPress(PHP)安装 mbstring 扩展.webp

2. 此外,也可以使用命令行方式(SSH):

Ubuntu / Debian 系统:

sudo apt-get install php-mbstring
# 重启PHP服务
sudo systemctl restart php-fpm  # 如果是Nginx+PHP-FPM
sudo systemctl restart apache2  # 如果是Apache

# 或如下命令
sudo apt update
sudo apt install php-mbstring
sudo systemctl restart php7.4-fpm   # 替换为你实际的 PHP 版本

CentOS / Rocky / AlmaLinux:

sudo yum install php-mbstring
# 重启PHP服务
sudo systemctl restart php-fpm  # 如果是Nginx+PHP-FPM
sudo systemctl restart apache2  # 如果是Apache

3. 使用 Docker: 如果你的网站运行在 Docker 容器中,需要修改 Dockerfile 或安装对应扩展,例如:

RUN docker-php-ext-install mbstring

检查是否安装成功:

你可以在终端执行以下命令:

php -m | grep mbstring

如果有输出 mbstring,说明已安装成功。

当然,此时您直接测试支付宝当面付能否正常使用也行!

0

评论0

没有账号?注册  忘记密码?

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码