应用程序无法使用 Vagrant 创建可写文件夹
Posted
技术标签:
【中文标题】应用程序无法使用 Vagrant 创建可写文件夹【英文标题】:Application can't create a writable folder with Vagrant 【发布时间】:2014-12-10 00:15:02 【问题描述】:我从 Vagrant 的 Official Precise64 box 配置了我自己的基本 Vagrant Box。我有一个同步文件夹位于“/var/www”,公共文件夹位于“/var/www/public”。
对于“/var/www”,我的权限是:
drwxr-xr-x 1 vagrant vagrant
对于“/var/www/public”,我的权限是:
drwxr-xr-x 1 vagrant vagrant
为了说明我的问题,对于 WordPress 应用程序,我手动将上传权限设置为 777。WordPress 能够在当月的上传内容中创建一个文件夹,例如“/var/www/public/wp-content /上传/10/";但是,它无法上传或写入刚刚创建的文件夹,除非我再次手动将新创建的“10”文件夹的权限更改为可写。
这种情况发生在所有应用程序中,例如 Laravel 的“storage”文件夹,基本上任何时候程序尝试创建目录。尝试在配置期间强制设置 Vagrant Up 的权限也不起作用:
config.vm.synced_folder "/path/to/writable/folder", "/path/to/writable/folder", :mount_options => ["dmode=777","fmode=666"]
那么,我需要在虚拟服务器上设置哪些权限才能使其正常工作?
【问题讨论】:
【参考方案1】:我在 Vagrant 中使用了 WordPress 和 Laravel,并在 Vagrantfile 中设置了写入权限:
config.vm.synced_folder ".", "/vagrant", :mount_options => ['dmode=774','fmode=775']
并将默认的 Apache 用户添加到 vagrant
组(我使用 shell 配置):
usermod -a -G vagrant www-data
【讨论】:
这行得通。就我而言,“config.vm.synced_folder ".", "/var/www", :mount_options => ["dmode=777", "fmode=666"]" 也有效。谢谢 这不会使 vagrant 中的所有文件夹都可写吗?如果想让特定文件夹可写怎么办。我正在考虑只让 /cache 文件夹可写,其余的保持原样。 对于想要使用此功能的 Homestead 用户:***.com/a/56056933/3017716【参考方案2】:为了扩展 Jesse 的答案,在使用 homestead(以及 Homestead.yaml)时,您可以像这样传递这些选项
folders:
- map: ./
to: /home/vagrant/code
options:
mount_options: ['dmode=777','fmode=777']
基于https://laravel.com/docs/5.8/homestead#configuring-homestead 和https://www.vagrantup.com/docs/synced-folders/basic_usage.html#modifying-the-owner-group
【讨论】:
【参考方案3】:尝试将以下行添加到您的 Vagrant 文件中:
config.vm.synced_folder ".", "/vagrant", :group => "www-data", :mount_options => ['dmode=775','fmode=664']
【讨论】:
您能否详细说明您的答案,添加更多关于您提供的解决方案的描述?以上是关于应用程序无法使用 Vagrant 创建可写文件夹的主要内容,如果未能解决你的问题,请参考以下文章
Vagrant机器无法通过ssh对我新创建的用户进行身份验证