7

我正在使用带有精确64 框和 Laravel 4 项目的 vagrant。我已将存储文件夹设置为可写(777 仅适用于我),并且每次创建新文件(例如会话)时,我都需要再次手动将新文件设置为可写。

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

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

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
4

5 回答 5

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

于 2013-07-23T07:44:41.613 回答
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
于 2016-07-27T14:03:23.987 回答
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
于 2014-08-04T01:44:45.740 回答
0

如果您正在谈论shared folderor synced 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
于 2013-07-09T05:57:27.440 回答
0

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

这是我的新配置

config.vm.synced_folder "./", "/var/www", :owner => 'www-data', :group => 'www-data'
于 2014-02-06T15:45:19.817 回答