【发布时间】:2014-06-28 12:27:50
【问题描述】:
我在 Windows 上使用 Vagrant,并在 PuPHPet(Debian 7 和 PHP 5.4)上创建了一个盒子。我用 Symfony 2 安装了一个新项目,清除缓存时出现了一些错误,例如“无法重命名”或“无法删除目录”。
我使用了默认配置,但也尝试过:
启用 NSF
按照Symfony guide 上的“设置权限”部分进行操作
将 www-data 指定为 /var/www 的用户/组
将 vagrant 更改为 apache 用户/组
什么都没有改变,仍然是同样的错误。
如何使用 Vagrant 对 Symfony 的缓存设置正确的权限?
谢谢
【问题讨论】:
-
当您将
vagrant更改为 apacheuser/group时,您还应该将vagrant指定为您的/var/www的用户/组(如果您之前已将其更改为www-data)。 -
我不熟悉 PhPHPNet.. 但我假设您使用的是同步文件夹。你流浪文件是否包含所有者:“www-data”,组:“www-data”,mount_options:[“dmode = 755,fmode = 644”]。您也可以尝试使用 ["dmode=777,fmode=777"]。您可以在 windows 机器上配置 symfony 控制台命令并从 windows 执行。如果不能,也尝试以 root 身份从虚拟盒中删除缓存中的文件夹(例如 old_dev ),这可能是 vm 提供程序的错误(例如 virtualBox 的问题)
-
我尝试了 mount_options: ["dmode=777,fmode=777"] 仍然是同样的问题。如果我从 Windows 清除缓存,Symfony 会出现另一个错误,它混合了 Windows 和 Linux 路径:“ContextErrorException: Warning: file_get_contents(E:/www/test/app/Resources\views/base.html.twig): failed打开流:/var/www/test/vendor/symfony/symfony/src/Symfony/Component/Templating/Storage/FileStorage.php 第 32 行中没有这样的文件或目录”
-
我也刚刚尝试过类似的设置(本地 vmbox),当源存储在 Windows 上时,我遇到了很多 symfony 问题。很难将它们全部计算在内。 symfony 缓存相关的类和其他类也有类似 if ( PHP_WINDOWS_VERSION_BUILD ) { ; }(如果我们需要混合不同的文件系统,这看起来不太好)
-
对我有用的唯一“解决方案”是在 Windows 上拥有文件(未同步)并使用通常随 IDE 提供的自动部署/同步工具。