使用vagrant时,不会为新创建的文件维护权限

时间:2013-07-08 19:41:31

标签: ubuntu laravel vagrant

我正在使用带有精确64盒的流浪汉Laravel 4项目。 我已将Storage文件夹设置为可写(777仅适用于我),每次创建新文件时,例如会话,我需要再次手动设置新文件是否可写。

是否有任何选项可以将新创建​​的文件设置为可写,以便将来防止出现此类问题?

编辑:这是包含新会话的会话文件夹(从流浪盒中完成)的ll -la输出示例,也许它会有所帮助。

vagrant@precise64:/myfinalproject$ ll -la ./app/storage/sessions/
total 16
drwxrwxrwx 1 vagrant vagrant 4096 Jul  9 04:29 ./
drwxrwxrwx 1 vagrant vagrant 4096 Jun 10 12:57 ../
-rwxrwxrwx 1 vagrant vagrant   13 Jun 10 12:57 .gitignore*
-rw------- 1 vagrant vagrant  229 Jul  9 04:29 sess_u8ov414cgie6v3afmkgn3net33

5 个答案:

答案 0 :(得分:3)

我的权限问题非常相似,可能相同。我可以查看该网站一次,然后所有请求都会导致权限错误。

尝试将以下代码添加到您的VagrantFile:

# Set the ownership of the app/storage directory
config.vm.synced_folder "app/storage", "/vagrant/app/storage", :owner => 'www-data', :group => 'www-data'

希望能帮到你。以下来源为我提供了解决方案:https://github.com/experience/vagrant-laravel-application/blob/master/Vagrantfile

答案 1 :(得分:2)

将您的apache用户和组设置为vagrant。在ubuntu中,编辑/ etc / apache2 / envvars并更改

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

export APACHE_RUN_USER=vagrant
export APACHE_RUN_GROUP=vagrant

答案 2 :(得分:0)

如果您正在谈论shared foldersynced folder,您可以使用可选参数来控制权限:

config.vm.share_folder "shared_folder", "/myfinalproject", "/host/path", :owner => "vagrant", :group => "vagrant"

<强>参考

http://rubydoc.info/gems/vagrant/Vagrant/Config/VMConfig%3ashare_folder

<强>来源

# File 'lib/vagrant/config/vm.rb', line 53

def share_folder(name, guestpath, hostpath, opts=nil)
  @shared_folders[name] = {
    :guestpath => guestpath.to_s,
    :hostpath => hostpath.to_s,
    :create => false,
    :owner => nil,
    :group => nil,
    :nfs   => false,
    :transient => false,
    :extra => nil
  }.merge(opts || {})
end

答案 3 :(得分:0)

更改它,以便您同步整个laravel应用程序文件夹。不仅仅是特定的存储目录。 我和你有同样的问题,我只是同步存储目录。 Laravel能够在session dir中创建一个新文件,但后来无法写入它刚刚创建的文件。

这是我的新配置

config.vm.synced_folder "./", "/var/www", :owner => 'www-data', :group => 'www-data'

答案 4 :(得分:0)

对于可能正在搜索此问题但在使用 VirtualBox (并且您使用的是共享文件夹)时遇到此问题的任何人:

// Get your user id,gid (in this case I'm root):
# id
uid=0(root) gid=0(root) groups=0(root)

// Add apache to vbox group
usermod -a -G vboxsf apache

// Get apache's id,gid
# id apache
uid=48(apache) gid=48(apache) groups=48(apache),499(vboxsf)

// Update fstab mount to use these id,gid
# vi /etc/fstab
      [ add this line to the file ]
      shared-name  /path/to/guest/shared/folder/here  vboxsf  rw,uid=0,gid=0,uid=48,gid=48  0  0