Symfony 4 无法在缓存/dev 目录上写入

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

我已经设置了一个新的 symfony 4 项目。这是为了本地开发而在 vagrant 上运行的。现在我遇到了文件权限问题。

Symfony 本身说这应该是任何问题:设置或修复文件权限

如果我运行

bin/console cache:clear
,则代码运行良好。但是一旦我更改了代码,我就会收到以下错误:

(1/1) IOException
Unable to write to the "/var/www/path_to_project/var/cache/dev" directory.
再次运行

bin/console cache:clear

,代码工作正常。但又改了代码,又出现同样的写入问题。

我尝试过

chmod +r 777 var/cache/dev

,但这并没有改变什么。我该如何解决这个问题?

Ahmed bhs的输出

$ ls -la var/ total 16 drwxrwxr-x 4 vagrant vagrant 136 Jan 7 11:41 ./ drwxrwxr-x 14 vagrant vagrant 476 Jan 7 12:30 ../ drwxrwxr-x 3 vagrant vagrant 102 Jan 7 12:57 cache/ drwxrwxr-x 2 vagrant vagrant 68 Jan 7 11:41 log/ $ id uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant),4(adm),24(cdrom),27(sudo),30(dip),33(www-data),46(plugdev),110(lxd),115(lpadmin),116(sambashare),998(rvm),1003(www-user)

编辑 问题不是 symfony 而是我的 vagrantfile 的配置。 Synced_folder 的所有者为“vagrant”,而 apache 的所有者为“www-data”。制作了所有“www-data”,现在工作正常。完全与 symfony 无关!

symfony vagrant
3个回答
3
投票
尝试

sudo chmod -R 777 /var/www/path_to_project/var/cache/*


    


1
投票
运行

chmod -R 0777 var

,而不是为单独的文件夹运行命令。


0
投票
我为 symfony 6 解决了这个问题,但我认为它也相关。 您需要将

cahce

目录更改为未安装的路径。
我添加了
src/Kernel.php

class Kernel extends BaseKernel { use MicroKernelTrait; public function getCacheDir(): string { if ($this->getEnvironment() === 'local') { return '/tmp/mail-service/' . $this->getEnvironment() . '/cache'; } else { return parent::getCacheDir(); } } }
并添加到项目根文件中

.env.local


APP_ENV=local
    
© www.soinside.com 2019 - 2024. All rights reserved.