1

我有一个运行我的开发代码的 vagrant box 设置,它是一个 nginx/php 设置。(关于 vagrant 的快速信息 - 它是一个 virtualbox 包装器:http ://www.vagrantup.com/ )。

在 vagrant/virtualbox 设置中,它使用 linux 来宾添加在我的主机(MAC OSX)上挂载一个共享文件夹。

linux guest path: /var/www/local 
OSX host path: ~/src/

在多种情况下,我发现 php 似乎无法通过任何命令(file_put_contentsfwrite.. 等)向已安装共享文件夹上的任何路径位置写入任何内容,但是它能够在外部写入/var/www/local(例如/var/www/not-mounted/..)。

我发现这很难使用,因为我使用的是缓存系统,并且它一直无法写入(/var/www/local/public/root/cache/)我需要位于我网站根文件夹(/var/www/local/public/root/index.php)中的任何缓存 javascript/css 文件。

我对这个主题做了很多研究:看来,文件夹挂载具有正确的权限:当我mount在 linux guest 中键入命令时,我得到这个:

/var/www/local on /var/www/local/ type vboxsf (uid=1000,gid=1000,rw)

阐明:

这种情况一直在发生,这是我遇到的一个已知问题,我尝试解决。

来自cat /etc/passwd

vagrant:x:1000:1000:vagrant,,,:/home/vagrant:/bin/bash

谁可以帮我这个事?

4

1 回答 1

2

我已经弄清楚了问题所在。

我忘了给 PHP 正确的用户权限和写入文件夹的权限。基本上,我的 PHP 用户/用户组是 www-data/www-data 但是,vagrant 有自己的用户/组(vagrant/vagrant),它安装文件夹 /local/。

由于我不想弄乱我的 vagrant 安装行为,我只是简单地更改了我的 php 配置以使用用户/组启动 PHP - vagrant/vagrant。

这为我解决了这个问题。

谢谢您的帮助!

于 2013-08-20T14:20:17.250 回答