You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento 2.4.7与Braintree核心模块编译错误求助(PHP8.1/8.2)

解决Magento 2.4.7在PHP8.1/8.2下的编译错误问题

问题根源

报错的核心原因是paypal/module-braintree-core插件代码使用了独立null返回类型,该语法在PHP8.1中虽已支持,但部分环境或旧版本模块存在兼容性问题;PHP8.3对该语法支持更完善,因此切换后无报错。即便你禁用了相关模块,仍可能存在模块禁用未生效、缓存残留或隐性依赖的情况。

解决方案

1. 临时修改报错代码(快速修复)

直接调整报错文件的返回类型,适配PHP8.1/8.2的语法要求:

  1. 打开文件/servername/vendor/paypal/module-braintree-core/Plugin/DeleteStoredPaymentPlugin.php
  2. 定位到第57行代码:
    ): null {
    
  3. 将其修改为以下兼容写法之一:
    // 写法1:方法无返回值时推荐使用void类型
    ): void {
    
    或
    // 写法2:兼容可能返回null的场景,使用可空void类型
    ): ?void {
    
  4. 重新执行编译命令:
    php bin/magento setup:di:compile
    

2. 确保Braintree模块完全禁用

若修改代码不是长期方案,需彻底禁用相关模块并清理残留:

  1. 强制禁用核心Braintree模块:
    php bin/magento module:disable PayPal_Braintree PayPal_BraintreeCore --clear-static-content
    
  2. 更新模块配置并清理缓存:
    php bin/magento setup:upgrade
    php bin/magento cache:flush
    
  3. 再次执行编译:
    php bin/magento setup:di:compile
    
  4. 验证模块状态:
    php bin/magento module:status PayPal_Braintree
    
    确认输出为Disabled即可。

3. 升级Braintree模块至兼容版本

通过Composer升级模块,获取适配PHP8.1/8.2的版本:

composer update paypal/module-braintree-core paypal/module-braintree --with-all-dependencies

升级完成后重新执行编译命令。

4. 恢复网站访问

若编译完成后网站仍无法访问,执行以下命令重置环境:

# 切换到开发者模式便于排查问题
php bin/magento deploy:mode:set developer
# 清理静态文件和缓存
php bin/magento cache:clean
php bin/magento setup:static-content:deploy -f

内容的提问来源于stack exchange,提问作者Mike L-SJC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:15:01