我有一个 Symfony Web 应用程序。我想将其部署到虚拟专用服务器。我在 Laravel Homestead Vagrant box 中开发了该应用程序,并且我 39;我正在通过 Github 操作进行部署。在我的本地计算机上,该应用程序在 Vagrant 环境中运行良好,但在将文件同步到实时服务器后,它给我一个错误屏幕。警告:需要(/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(); }}我不明白的是,根据错误消息和上面的代码,$this->getProjectDir()的输出解析为/var/www/thebedechkacase.com/src/ (< /span>。 实际上位于 thebedechkacase.com 是存储我的应用程序代码的文件夹),但 bundles.php/var/www/thebedechkacase.com/config/为什么 Symfony 认为 projectDir 位于 src 中,而为什么它不查找 config在根目录中(又名 thebedechkacase.com/)?为什么这在我的开发环境中有效,但在实时服务器上却不起作用?其他信息: 我正在尝试使用我在 Github 操作中调用的 shell 脚本设置必要的环境变量,但是当我检查时在实时服务器的 shell 上手动设置环境变量,我发现它们都没有设置,所以我的脚本可能首先就被破坏了(这就是为什么你能够看到默认值Symfony 错误页面)。这可能与此有关,或者这是另一个错误?您可以在其中看到错误的网址: https://thebedechkacase.com/项目的 Github 存储库: https://github.com/Cooty/the-bedechka-case部署代码的操作: https://github.com/Cooty/the-bedechka-case/blob/develop/.github/workflows/main.yml< /span>Symfony 版本: 5.0实时服务器运行 Ubuntu 20.04、Ngingx、PHP-FPM 7.4 和 PHP 7.4。
2 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
Symfony 将“项目目录”设置为基于“composer.json”文件位置。 “项目目录”需要引导应用程序(Web 和 cli)。
这就是为什么当您在没有“composer.json”的情况下部署应用程序时,例如。对于 Elasticbeanstalk,您需要像这样修改内核:
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\HttpKernel\Kernel 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() 方法。
- 2 回答
- 0 关注
- 124 浏览
添加回答
举报
0/150
提交
取消