暮光博客

小心你讨厌的东西,因为你很可能被它塑造成某种形状

Vagrant里的权限问题

折腾 5 条评论

背景

Vagrant 是一个虚拟化工具,它主要是一个中间层技术,它的下层是 VirtualBox, VMware, AWS 或者其他 provider,它的上层是 provisioning 工具,比如 shell scripts, Chef, or Puppet 等可以自动化安装和配置软件的工具。

平常在工作中我把 Vagrant 集成 Lnmp 做为开发环境,前几天折腾 Laravel 的时候还好,因为 Laravel 提供了 Homestead 集成包,里面的 Nginx 、权限以及 Composer 相关组件全部都预设好了。

而当我今天使用 ThinkPHP 的时候,却一直提示 Runtime 文件夹里新建的缓存无法读写,那肯定是权限的问题了。首先我在虚拟环境中用umask 755命令来设置默认权限,但是重启环境后看新建的缓存,权限依然是 022 ,即使将上层目录权限改为 755 也不行。

解决

那干脆就更改项目目录的用户和组吧, Vagrant 的目录默认运行组和用户都是「vagrant」,既然在用 Nginx ,就要将项目目录的组和用户都设置为「www」,但是我在虚拟环境的 SSH 里无论如何都设置不成功,而且也不报错。只能求助于 Google 了,搜索了一番终于找到结果了。原来设置用户和组的操作,要写在Vagrantfile配置文件里,要在vagrant环境启动做目录映射的同时,设置目录的组和用户。配置语句如下:

config.vm.synced_folder "../sites", "/vagrant_sites",create: true, owner:"www", group: "www"

其中,../sites是本地的项目目录,/vagrant_sites是虚拟环境中的目录,在其后加上 owner 和 group 的配置就可以了。

如何在PHPStorm和Vagrant环境下安装Xdebug
评论区 / 取消回复
选择表情选择表情
  1. yue

    困扰了半天的问题 终于解决了 谢谢

    回复
  2. 博主 有没有PHP5.3的虚拟机环境介绍呀?我上次装的是Laravel框架集成的,php7.0我用不上~~

    回复
    1. @小彦

      LNMP一键安装包,安装时可以自由选择PHP版本。

      回复
  3. 技术帝!!!!!!!!!

    回复