为什么我部署的 Symfony 应用程序无法加载 bundles.php 文件?

Coo*_*oty 4 php deployment symfony devops

我有一个 Symfony Web 应用程序。我想将其部署到虚拟专用服务器。

我在Laravel Homestead Vagrant box中开发了该应用程序,并通过 Github 操作进行部署。

在我的本地计算机上,该应用程序在 Vagrant 环境中运行良好,但在将文件同步到实时服务器后,它给我一个错误屏幕。

警告:require(/var/www/thebedechkacase.com/src/config/bundles.php):无法打开流:没有这样的文件或目录

错误来自 Kernel.php 的第 20 行,如下所示

const CONFIG_EXTS = '.{php,xml,yaml,yml}';
public function registerBundles()
{
    $contents = require $this->getProjectDir().'/config/bundles.php';
    foreach ($contents as $class => $envs) {
        if ($envs[$this->environment] ?? $envs['all'] ?? false) {
            yield new $class();
        }
}
Run Code Online (Sandbox Code Playgroud)

我不明白的是,根据错误消息和上面的代码, 的输出解析$this->getProjectDir()/var/www/thebedechkacase.com/src/thebedechkacase.com是存储我的应用程序代码的文件夹),但bundles.php实际上位于/var/www/thebedechkacase.com/config/.

为什么 Symfony 认为 theprojectDir存在并且为什么不在根目录(又名 )中src查找?为什么这在我的开发环境中有效,但在实时服务器上却不起作用?configthebedechkacase.com/

附加信息:我正在尝试使用在 Github 操作中调用的 shell 脚本设置必要的环境变量,但是当我在实时服务器的 shell 上手动检查环境变量时,我发现它们都没有设置,所以我的脚本可能首先就被破坏了(这就是为什么你能够看到默认的 Symfony 错误页面)。这可能与此有关,或者这是另一个错误?

您可以在其中看到错误的 URL: https ://thebedechkacase.com/

该项目的 Github 存储库: https ://github.com/Cooty/the-bedechka-case

部署代码的操作: https://github.com/Cooty/the-bedechka-case/blob/develop/.github/workflows/main.yml

交响乐团版本: 5.0

实时服务器运行 Ubuntu 20.04、Ngingx、PHP-FPM 7.4 和 PHP 7.4。

Coo*_*oty 13

@Cerad引导我找到了解决方案,我从rsync命令的文件列表中排除了composer.json,我认为它只需要安装依赖项,但并不是Symfony也在运行时从中读取。