php - Vagrant 和 symfony2

标签 php macos apache symfony vagrant

我遇到了一个与在 Vagrant 环境中安装 Symfony2 有关的奇怪问题。环境设置正确并且正在运行一个 Web 服务器,该服务器从与位于 vagrant 基本目录中的 vagrant 环境共享的文件夹中提供文件。

基本上,vagrant 在目录 foo 中启动,然后在 foo 中,有一个名为 webroot 的目录。 Vagrant 自动共享 foo 目录。 apache 服务器设置为运行,以便 webroot 是基本的 http 目录。这一切工作正常,我能够提供基本的 HTML、PHP 和 MySQL 连接测试正常。

我使用 composer 以推荐的方式安装 vagrant,安装到/webroot/中名为 Symfony 的目录中。所有文件现在都存在于正确的目录中。配置正确,在/config.php 中没有Symfony 声称需要更改的项目。

当我尝试加载/app_dev.php 时出现问题。它抛出一个异常,声称它无法在/app 目录中创建一个名为 cache 的文件。

由于我使用的 vagrant box 不支持 chmod +a,我选择通过在 app_dev 中取消注释 umask(0000) 来设置权限。假设这是一个权限问题,我尝试使用 chmod 将 vagrant 环境和 osx 中的所有权限都调整为 777。

奇怪的是,当我在 vagrant 环境中对文件或目录进行 chmod 时,它声称已正确设置 777,但是当我 ls -l 时,权限没有改变。但是,当我从外部 chmod 文件或目录时,webroot 文件夹中的 Vagrant 环境,权限仍然存在。由于 symfony 在环境中没有 r/w 权限,它无法创建必要的缓存和日志文件。当我从 osx 命令运行 symfony 时,一切正常。

有没有人知道如何更改/webroot 目录的权限,以便 vagrant 环境中的东西实际上可以读取和写入它,因为 chmod 似乎不起作用?

最佳答案

Update as of 15th Jan 2016. Instructions for Vagrant 1.7.4+ and Symfony 3. This works.

在全新的 Ubuntu 14.04 安装中,安装了 ACL,但我无法使用 +a 或 setfacl 来修复权限问题,当然,一旦您在 vagrant 中更改终端中的任何权限,它们就会重置为 Vagrant :又是 Vagrant 。

我在 vagrant 文件中添加了以下内容:

# Symfony needs to be able to write to it's cache, logs and sessions directory in var/
config.vm.synced_folder "./var", "/vagrant/var",
 :owner => 'vagrant',
 :group => 'www-data',
 :mount_options => ["dmode=775","fmode=666"]

这告诉 Vagrant 同步 var/logs 和 var/cache(不要与/var/混淆,它们在根 Symfony 目录中)并让它们归 vagrant:www-data 所有。这与执行 sudo chown vagrant:www-data var/ 相同,除了 Vagrant 现在为您执行并强制执行,而不是强制执行 vagrant:vagrant。

请注意这里没有 777 个“hacks”

一旦我添加了它,我就没有在 apache 日志中收到任何更多的权限错误,并且我得到了一个漂亮的 Symfony 欢迎屏幕。我希望这对某人有所帮助!

关于php - Vagrant 和 symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18029973/

相关文章:

php - 循环PHP,按组无重复字段,求和mysql

java - Apache Commons JXPath 搜索在 XPath 搜索期间是否编码对象?

objective-c - 是否可以在 Mac 上使用 Cocoa 监控其他应用程序?

java - 用于运行 Java 应用程序的批处理文件。如何将其移植到 Mac 中?

macos - SH 文件未设置 ENV 变量 (Mac OS X)

php - 升级后的 PHP 现在 apache 不再执行 php 文件

apache - Tomcat 7 锁定 jackrabbit 存储库

javascript - 多重提交按钮和回车键

php - 客户端缺少 Content-Disposition header

php - jquery $.get 函数的问题