【问题标题】:php bin/magento setup:di:compile Fatal Errorphp bin/magento setup:di:compile 致命错误
【发布时间】:2021-08-30 11:56:31
【问题描述】:

一段时间以来,我一直在尝试为我的 Magento 管理面板找到修复程序,当我想更改某些设置时,它不允许我更改任何内容,例如,“使用系统值”框被锁定,当我将鼠标悬停在它们上面我会看到一个红色圆圈,表示我无法更改值。

我找到了这个教程:https://community.magento.com/t5/Magento-2-x-Technical-Issues/Unlock-configuration/m-p/95209#M5084

但是当我尝试运行 setup:di:compile 时,我得到了这个错误:

“应用程序代码生成器... 3/9 [=========>------------------] 33% 5 secs 246.0 MiBPHP Fatal错误:未捕获的类型错误:rtrim() 期望参数 1 为字符串,布尔值在 /var/www/html/setup/src/Magento/Setup/Module/Di/Code/Scanner/PhpScanner.php:95 中给出 堆栈跟踪: #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 在第 95 行

致命错误:未捕获的类型错误:rtrim() 期望参数 1 为字符串,布尔值在 /var/www/html/setup/src/Magento/Setup/Module/Di/Code/Scanner/PhpScanner.php:95 中给出 堆栈跟踪: #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 在第 95 行"

我尝试过 composer install 和 update,但这似乎没有帮助...

我的php版本是7.4.20。

任何帮助表示赞赏!

【问题讨论】:

  • 请分享更多细节。这与 Composer 有什么关系?为什么不调试代码看看哪里出错了?

标签: php magento dependency-injection composer-php magento2


【解决方案1】:

当您在运行 bin/magento setup:di:compile 之前的某个时间点运行集成测试时,我遇到了这个问题。

集成测试在app/code/Magento 中生成一些测试模块,然后由setup:di:compile 命令获取。 我通过从app/code 中删除Magento 文件夹来解决此问题。

【讨论】:

    【解决方案2】:

    升级到 Magento2.4.2-p1 后我也面临同样的问题。我对此做了一些分析,得到了这个错误的原因。 实际上,Magento 安装了一些新模块,例如 Magento_TestModuleAsyncAmqp、Magento_TestModuleExtensionAttributes 等。 当你去文件时

    app/code/Magento/TestModuleExtensionAttributes/Api/Data/FakeExtensibleTwoInterface.php

    你会看到

    /**
         * test incorrect return type
         *
         * **@return int**
         */
        public function getExtensionAttributes();
    

    所以,这里要求提供类作为返回类型而不是@return int 如果您将以下类添加为返回类型,那么它应该可以工作。

    \Magento\TestModuleExtensionAttributes\Api\Data\FakeExtensibleTwoExtensionInterface|int

    尝试在此处提供类,然后在清除缓存、生成等后再次运行 di:compile

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多