Symfony在docker安装时失败

Symfony run fails on docker installation

提问人:Onur 提问时间:11/17/2023 更新时间:11/18/2023 访问量:23

问:

当我尝试通过docker compose运行我的Symfony项目时,我收到以下错误。这是错误:

Script cache:clear returned with error code 255
!!  Symfony\Component\ErrorHandler\Error\ClassNotFoundError {#76
!!    #message: """
!!      Attempted to load class "MakerBundle" from namespace "Symfony\Bundle\MakerBundle".\n
!!      Did you forget a "use" statement for another namespace?
!!      """
!!    #code: 0
!!    #file: "./vendor/symfony/framework-bundle/Kernel/MicroKernelTrait.php"
!!    #line: 132
!!    trace: {
!!      ./vendor/symfony/framework-bundle/Kernel/MicroKernelTrait.php:132 { …}
!!      ./vendor/symfony/http-kernel/Kernel.php:386 { …}
!!      ./vendor/symfony/http-kernel/Kernel.php:788 { …}
!!      ./vendor/symfony/http-kernel/Kernel.php:128 { …}
!!      ./vendor/symfony/framework-bundle/Console/Application.php:168 { …}
!!      ./vendor/symfony/framework-bundle/Console/Application.php:74 { …}
!!      ./vendor/symfony/console/Application.php:171 { …}
!!      ./vendor/symfony/runtime/Runner/Symfony/ConsoleApplicationRunner.php:54 { …}
!!      ./vendor/autoload_runtime.php:35 { …}
!!      ./bin/console:11 {
!!        › 
!!        › require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
!!        › 
!!        arguments: {
!!          "/var/www/html/vendor/autoload_runtime.php"
!!        }
!!      }
!!    }
!!  }
!!  2023-11-17T17:16:04+03:00 [critical] Uncaught Error: Class "Symfony\Bundle\MakerBundle\MakerBundle" not found

问题在于,makerbundle 不应该在非开发环境中。当我从 composer.json 文件中删除它时,它按预期工作,否则会导致问题。我现在应该怎么做?谢谢你的建议。

php docker symfony docker-compose symfony5

评论


答:

1赞 Adrian98do 11/17/2023 #1

1 - 安装 MakerBundle:“检查 MakerBundle 是否安装了 composer require symfony/maker-bundle --dev。这将安装它以供开发使用。

2 - 捆绑包配置:“确保 MakerBundle 在捆绑.php包中配置为 Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],用于开发环境加载。”

3 - 手动清除缓存:“尝试通过删除 var/cache 目录手动清除缓存,然后重新运行该命令。”

0赞 CAAHS 11/18/2023 #2

不要在不适合的环境中执行该脚本。相反,只在它所针对的环境中执行它。

使用 Composer 的相应命令行标志控制脚本和插件的执行,在您使用的 Composer 版本的手册中查找它们(例如 --no-plugins 和 --no-scripts,但这可以在 composer 版本和命令之间更改)。

更好的是,不要将它们放在不需要它们的环境中,那么它们就无法执行。参见 Adrian98dos 的回答

只使用具有正确配置的正确工具来完成工作,否则预计事情会破裂,并让自己具备开始阅读晚点所需的心态。这些事情都有记录在案。

0赞 Onur 11/21/2023 #3

我明白原因了。原因是APP_ENV变量在测试环境中的值为“dev”,因此系统正在尝试使用 MakerBundle。我用“test”更新了值,现在它按预期工作。