Virtualbox 共享 + Symfony =“文本文件忙”

问题描述 投票:0回答:1

我有一个 Linux 虚拟机(Ubuntu)并创建了一个 共享目录(/var/www/MYWEBSITE)

在那里安装了 Symfony,现在当它尝试清除缓存时我遇到一个问题:“不允许操作”或“文本文件忙

从终端调用“bin/console cache:clear”会出现相同的错误

sudo bin/console cache:clear” - 同样的错误,所以我认为这不是权限问题

手动删除缓存文件或整个目录(即从文件管理器)对于每个用户都可以正常工作(尝试过 root/user/www-data)

看起来这个问题与 Virtualbox 文件系统有关,但我不确定

symfony virtualbox
1个回答
0
投票

找到解决方案:https://reddingitpro.com/2022/02/10/vagrant-symfony-log-files/

由于 Vagrant 在虚拟环境和物理 Windows 主机之间映射这些文件夹的方式,可能会出现明显的滞后

处理此问题的最简单方法是将缓存/日志目录移动到 DEV 模式的另一个(非共享)位置:

编辑 Symfony 内核类以使用新路径:

public function getCacheDir(): string
{
    if($this->environment=="dev"){
        return '/var/log/dev/cache'; //magic happens here

    }
    return dirname(__DIR__).'/var/'.$this->environment.'/cache';
}

public function getLogDir(): string
{
    if($this->environment=="dev"){
        return '/var/log/dev/log'; //and here
    }
    return dirname(__DIR__).'/var/'.$this->environment.'/log';
}

当 Symfony 环境配置为“dev”时,此代码将专门使用新的 /var/log/dev 子目录专门用于缓存和日志文件。否则它将使用默认位置,例如在生产中,希望您没有在虚拟盒设置中运行它

© www.soinside.com 2019 - 2024. All rights reserved.