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

Magento后台配置锁死且执行setup:di:compile报rtrim参数错误求助

Magento后台配置锁定与di:compile编译报错解决方案

问题说明

  • 后台调整配置时「Use system value」勾选框为锁定状态,鼠标悬浮显示红色禁止标识,无法修改配置值
  • 执行setup:di:compile命令时报PHP致命错误,已尝试composer install、composer update操作无法解决,当前运行PHP版本为7.4.20

报错日志

Application code generator... 3/9 [=========>------------------]  33% 5 secs 246.0 MiBPHP Fatal error:  Uncaught TypeError: rtrim() expects parameter 1 to be string, bool given in /var/www/html/setup/src/Magento/Setup/Module/Di/Code/Scanner/PhpScanner.php:95
Stack trace:
#0 /var/www/html/setup/src/Magento/Setup/Module/Di/Code/Scanner/PhpScanner.php(95): rtrim()
#1 /var/www/html/setup/src/Magento/Setup/Module/Di/Code/Scanner/PhpScanner.php(286): Magento\Setup\Module\Di\Code\Scanner\PhpScanner->getSourceClassName()
#2 /var/www/html/setup/src/Magento/Setup/Module/Di/Code/Scanner/PhpScanner.php(152): Magento\Setup\Module\Di\Code\Scanner\PhpScanner->shouldGenerateClass()
#3 /var/www/html/setup/src/Magento/Setup/Module/Di/Code/Scanner/PhpScanner.php(184): Magento\Setup\Module\Di\Code\Scanner\PhpScanner->_fetchMissingExtensionAttributesClasses()
#4 /var/www/html/setup/src/Magento/Setup/Module/Di/App/Task/Operation/ApplicationCodeGenerator.php(77): Magento\Setup\Module\Di\Code\Scanner\PhpScanner->collectEntities()
#5 /var/www/html/setup/src/Magento/Setup/Module/Di/App/Task/Manager.php(56): Magento\Setup\Module\Di\App\T in /var/www/html/setup/src/Magento/Setup/Module/Di/Code/Scanner/PhpScanner.php on line 95

解决方案

第一步:修复编译报错

这个报错的根源是自定义插件/本地修改代码存在不符合规范的类定义,导致类名解析失败返回布尔值传入rtrim()触发类型错误,按以下步骤修复:

  1. 打开文件/var/www/html/setup/src/Magento/Setup/Module/Di/Code/Scanner/PhpScanner.php,定位到第95行
  2. 给rtrim()方法的入参加字符串类型校验,修改前代码示例:
return ltrim(rtrim($className, '\\'), '\\');

修改为:

if (!is_string($className)) {
    return '';
}
return ltrim(rtrim($className, '\\'), '\\');
  1. 清理所有临时生成文件:
rm -rf var/cache/* var/generation/* var/di/* generated/*
  1. 重新执行编译命令,编译通过后清理缓存:
php bin/magento setup:di:compile
php bin/magento cache:clean
php bin/magento cache:flush

第二步:解除后台配置锁定

Magento配置项如果被硬编码写入配置文件,后台就会强制锁定不可修改,两种解决方式可选:

  • 配置文件修改方式:备份app/etc/config.php和app/etc/env.php文件,删除两个文件中对应需要修改的配置项,或者直接修改配置值后保存,清理缓存即可生效
  • 数据库修改方式:直接操作core_config_data表,找到对应配置路径的记录,修改value字段值,确认scope字段为你需要的作用域(默认为default全局),修改后清理缓存即可生效

内容的提问来源于stack exchange,提问作者rudolfssau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 01:06:05