我有一個 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 關注
- 191 瀏覽
添加回答
舉報
0/150
提交
取消