Разработка приложений основанных на фреймворке 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.
Вложение | Размер |
---|---|
Kernel_vagrant.patch | 460 байт |
Этот патч следует применить посредством git или patch команд. Важно применить его до команды composer install.
$ patch -p1 < Kernel_vagrant.patch --force
или
$ git apply Kernel_vagrant.patch