在流浪者上使用/dev/shm-允许错误/MacOSX


using /dev/shm on vagrant - PERMISSION ERROR / MacOSX

我正在MacOSX上使用Vagrant在Linux Ubuntu环境中进行开发。

与Symfony2合作。数据库和编码一切都很好。

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

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

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

我尝试再次生成资产,但我遇到了权限错误。。。

Chaging缓存目录:

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数据创建的。当我尝试在控制台(终端)上安装资产时;

php app/console assets:install web --symlink

php-cli或php-cgi与另一个用户一起工作,并且不允许修改该文件。

我能做什么?我被卡住了!

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

这是我在供应期间运行的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/中创建一个驻留在/varrant中的文件副本,因为/var/www在本地文件系统上,/farrant不在,它在主机上。

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

如果你不使用PHPStorm,我很感激它能做更多的工作,但这就是我解决这个特定问题的方法。我发现这比移动缓存文件夹更容易,因为并不是每个开发人员都在使用Vagrant框,所以我不能简单地更改代码而不破坏他们的系统。