Symfony внутри vagrant окружении

Опубликовано oioioooi - 10/03/2022 - 20:31

Разработка приложений основанных на фреймворке Symfony в Vagrant окружении может привети к ошибкам при очистке кэша фреймворка.

Чтобы исправить данную проблему необходимо настроить фреймворк так, что-бы хранить файлы кэша в директории которая находится вне синхронизированных директорий. К счастью, сам фреймворк позволяет изменить директории по умолчанию для кэша (и не только).

Подробнее: How to Override Symfony's default Directory Structure (Symfony Docs)

With this in mind, the idea is to override both cache and log directories. A simple patch can be applied to the bootstrapping provisioner of the vagrant virtual machine to alter the framework behaviour.

Переопределим директории кэша и логов. Для этого применим простой патч. Этот патч нужно применить в скрипте который первый раз собирает проект.

diff --git a/src/Kernel.php b/src/Kernel.php
old mode 100644
new mode 100755
index 779cd1f..94b5032
--- a/src/Kernel.php
+++ b/src/Kernel.php
@@ -8,4 +8,14 @@ use Symfony\Component\HttpKernel\Kernel as BaseKernel;
 class Kernel extends BaseKernel
 {
     use MicroKernelTrait;
+
+    public function getCacheDir(): string
+    {
+        return '/tmp/sf/cache';
+    }
+
+    public function getLogDir(): string
+    {
+        return '/tmp/sf/log';
+    }
 }

Сам патч доступен ниже. Проверялось на версии Symfony 6.

 

Этот патч следует применить посредством git или patch команд. Важно применить его до команды composer install.

$ patch -p1 < Kernel_vagrant.patch --force

или

$ git apply Kernel_vagrant.patch

Теги