Apache 在 Vagrant 中创建/编写目录

Posted

技术标签:

【中文标题】Apache 在 Vagrant 中创建/编写目录【英文标题】:Apache creating/writing directories in Vagrant 【发布时间】:2013-07-22 17:29:15 【问题描述】:

我有以下流浪共享设置:

config.vm.synced_folder "~/web", "/opt/subversion/web"

我的一个页面,打开 zip 文件并将它们解压缩到一个目录,比如说:

/opt/subversion/web/extracts/

当我们从 VM 内部查看目录时,它看起来像这样:

drwxrwxrwx 1 vagrant vagrant 136 Jul 23 13:31 extracts

当我们查看主机上的目录时,它是这样的:

drwxrwxrwx  4 garth  staff  136 Jul 23 15:31 extracts

然后网页会创建一个目录来存储 'extracts' 目录中 zip 文件中的内容(VM 视图):

drwxr-xr-x 1 vagrant vagrant 68 Jul 23 13:31 ZipExtractDir

当我试图从 apache/web 页面写入该目录中的文件时,我得到了权限被拒绝。

我在安装 Vagrant V1 之前从未遇到过这个问题,但我的共享是使用 sync_folder 选项的 :nfs=>true 属性完成的。我们现在正在使用通过 puppet 管理的 vagrant 的“全局”开发安装,带有“config.vm.network :public_network”

我是否必须设置 nfs,或者这里是否有其他问题以及 apache 将目录创建为“vagrant”而不是“apache”的原因。我假设我们无法写入目录,因为它是使用所有者“vagrant”而不是“apache”创建的,然后当 apache 尝试写入目录时,它会收到权限被拒绝错误。我什至可以使用 DHCP 使用 vagrant 设置 nfs,还是必须拥有静态 IP?

作为参考,apache 设置为使用 apache 用户。我还检查了 /etc/selinux/config 并设置了 SELINUX=disabled

【问题讨论】:

【参考方案1】:

我设法通过设置同步文件夹的权限找到解决此问题的方法,因此尽管 vagrant 内部的 user.group 是错误的,但它不是世界末日,只要 apache 用户可以写入目录.

config.vm.synced_folder "~/web", "/opt/subversion/web", :extra => 'dmode=777,fmode=777'

编辑:

对于 Vagrant 1.3.0+ 使用 :mount_options 而不是 :extra。

config.vm.synced_folder "~/web", "/opt/subversion/web", :mount_options => ['dmode=777,fmode=777']

【讨论】:

以上是关于Apache 在 Vagrant 中创建/编写目录的主要内容,如果未能解决你的问题,请参考以下文章

PHP 在 NFS 共享目录中创建空会话

vagrant box php centos 选 哪个

在 C 中创建一个新目录

如何使用在服务器中创建目录的 curl 上传文件

在C中创建一个新目录

如何在 c++ 中创建一个适用于 Windows 和 linux 的文件夹(目录)[重复]