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



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

我已经在Laravel Homestead Vagrant盒子中开发了该应用程序,我正在通过Github操作进行部署。

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

警告:require(/var/www/thebedechkaase.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();
}
}

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

为什么Symfony认为projectDirsrc中,为什么不在根目录(又名thebedechkacase.com/(中查找config?为什么这在我的开发环境中可以工作,但在实时服务器上却不能?

其他信息:我正试图用我在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

Symfony版本:5.0

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

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

Symfony设置;项目目录";基于";composer.json";文件位置。"项目目录";需要引导应用程序(web和cli(。

这就是为什么当你在没有";composer.json";,例如,对于弹性豆茎,你需要这样修改你的内核:

use SymfonyBundleFrameworkBundleKernelMicroKernelTrait;
use SymfonyComponentHttpKernelKernel as BaseKernel;
class Kernel extends BaseKernel
{
use MicroKernelTrait;
/**
* NOTICE:
* We don't want to deploy composer.json that's being used to compute project dir, so we will specify it here manually.
*/
public function getProjectDir()
{
return dirname(__DIR__);
}

请注意被覆盖的getProjectDir((方法。

最新更新