Php 在vagrant上使用/dev/shm-权限错误/MacOSX

Php 在vagrant上使用/dev/shm-权限错误/MacOSX,php,symfony,caching,vagrant,shared-memory,Php,Symfony,Caching,Vagrant,Shared Memory,我在MacOSX上使用Vagrant在Linux Ubuntu环境中开发 与Symfony2合作。db和编码都很好 当我尝试清除缓存并安装资产时,看起来好像已经完成了,但我无法使用我认为的任何缓存,因为我的资产没有更改 因此,我尝试将缓存目录更改为/dev/shm 刷新我的页面并查看该目录以查看创建的任何目录,我看到www数据用户和组成功创建的目录。那么php fpm必须创建该目录,这样它才能工作 我已尝试再次生成资产,但出现权限错误 更改缓存目录: public function getCac

我在MacOSX上使用Vagrant在Linux Ubuntu环境中开发

与Symfony2合作。db和编码都很好

当我尝试清除缓存并安装资产时,看起来好像已经完成了,但我无法使用我认为的任何缓存,因为我的资产没有更改

因此,我尝试将缓存目录更改为
/dev/shm

刷新我的页面并查看该目录以查看创建的任何目录,我看到www数据用户和组成功创建的目录。那么php fpm必须创建该目录,这样它才能工作

我已尝试再次生成资产,但出现权限错误

更改缓存目录:

public function getCacheDir()
{
    if (in_array($this->environment, array('dev', 'test'))) {
        return '/dev/shm/appname/cache/' .  $this->environment;
    }

    return parent::getCacheDir();
}

public function getLogDir()
{
    if (in_array($this->environment, array('dev', 'test'))) {
        return '/dev/shm/appname/logs';
    }

    return parent::getLogDir();
}
我的设想:

这些文件是由www数据创建的。当我尝试在控制台(终端)上安装资产时

PHPCLI或PHPCGI与其他用户一起工作,并且不允许修改该文件


我能做什么?我卡住了

我试着用Ubuntu主机做同样的事情。最后,我做的是创建app/cache作为指向/run/shm/sf cache的目录链接

这是我在资源调配期间运行的setup bash脚本中的内容

# create the cache path
sudo mkdir -p /run/shm/sf-cache/
sudo chmod 777 /run/shm/sf-cache

# Copy over the rest of the files (from /vagrant to /var/www/sf-project/)
/vagrant/provision/resync_files.sh

# Setup the log folder
sudo chmod 777 /var/www/sf-project/app/logs

cd /var/www/sf-project

# Link the Cache folder to the folder in the ram drive.
sudo ln -s /run/shm/sf-cache/ app/cache
但您会注意到,唯一的方法(至少对我来说)是创建驻留在本地文件系统/var/www/as/var/www中的/vagrant中的文件副本,/vagrant不是,它在主机上

使用PHPStorm不是问题,因为我只是通过samba共享/var/www/sf项目文件夹,然后将其映射为一个文件夹。在我的ubuntu主机上(我正在从Windows迁移到ubuntu),我装载samba共享,然后创建一个指向装载点的目录链接,然后在PHPStorm中设置部署服务器,将其部署到本地文件夹,因为它是samba共享,所以直接将其复制到/var/www/sf项目文件夹中

如果您不使用PHPStorm,我很感激它能做更多的工作,但这就是我解决这个问题的方法。我发现这比尝试移动缓存文件夹更容易,这增加了复杂性,即不是每个开发人员都在使用一个流浪者框,因此我不能简单地更改代码而不破坏他们的系统

# create the cache path
sudo mkdir -p /run/shm/sf-cache/
sudo chmod 777 /run/shm/sf-cache

# Copy over the rest of the files (from /vagrant to /var/www/sf-project/)
/vagrant/provision/resync_files.sh

# Setup the log folder
sudo chmod 777 /var/www/sf-project/app/logs

cd /var/www/sf-project

# Link the Cache folder to the folder in the ram drive.
sudo ln -s /run/shm/sf-cache/ app/cache