文章首发于公众号【小白书签】: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
,点击“安装”
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