VirtualBox共享目录部署Symfony缓存清理报错:Text file busy/Operation not permitted
解决VirtualBox共享目录下Symfony缓存清理报错的问题
可行解决方案
方法1:迁移Symfony缓存目录至非共享路径
编辑项目根目录下的config/packages/framework.yaml,修改缓存存储的目录为虚拟机本地的非共享路径(避开vboxsf文件系统限制):
framework: cache: app: cache.adapter.filesystem directory: '/home/your-user/symfony-app-cache' # 替换为虚拟机本地实际路径
保存配置后,重新执行bin/console cache:clear即可正常完成缓存清理。
方法2:调整VirtualBox共享文件夹挂载参数
关闭虚拟机后,在VirtualBox的「共享文件夹」设置中,为目标共享目录添加noacl、nolock挂载参数;也可在虚拟机启动后手动重新挂载:
sudo umount /var/www/MYWEBSITE sudo mount -t vboxsf -o rw,uid=www-data,gid=www-data,noacl,nolock 你的共享文件夹名称 /var/www/MYWEBSITE
挂载完成后再次尝试执行缓存清理命令。
问题原因
VirtualBox的vboxsf共享文件系统存在权限控制和文件锁定机制的局限性,Symfony的cache:clear命令会执行批量的文件原子操作(创建、删除、重命名等),这类操作在vboxsf下容易触发系统层面的权限或文件占用报错;而手动删除缓存属于零散操作,不会触发该机制冲突,因此可以正常执行。
内容的提问来源于stack exchange,提问作者fewrandom
相关产品推荐
相关产品推荐

