gpt4 book ai didi

symfony - Symfony2 上的权限问题

转载 作者:行者123 更新时间:2023-12-03 10:09:29 25 4
gpt4 key购买 nike

这个问题已经被问过好几次了,但没有一个解决方案能在我的情况下解决这个问题。

我在 Mac OSX Lion 上运行 Apache。此 http://localhost/Symfony/web/config.php URL 触发 2 个主要问题:

Change the permissions of the "app/cache/" directory so that the web server can write into it.
Change the permissions of the "app/logs/" directory so that the web server can write into it.

关注 guide在“设置权限”下:
rm -rf app/cache/*
rm -rf app/logs/*
sudo chmod +a "_www allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs

那并不能解决问题,所以我尝试了:
sudo chmod -R 777 app/cache

那也行不通。任何想法如何解决这一问题?

最佳答案

一些初步的解释:

  • 为了提高您网站的性能,Symfony2 需要缓存大量数据,它通过将编译文件写入您的 app/cache 来实现这一点。目录。
  • 为了提供强大的调试和监控工具,Symfony2 需要跟踪您的网站行为,它通过将跟踪文件写入您的 app/logs 来实现这一点。目录。

  • 关于 Apache 的一些话:
  • Apache 在特定 user 下运行和一个特定的 group (通常是 www-data ,但你必须检查你的安装才能找到使用的。例如,如果你在 Linux 中搜索 /etc/apache2/envvars,你将有两个变量 APACHE_RUN_USER=www-dataAPACHE_RUN_GROUP=www-data )。
  • 这意味着当你在 Symfony2 上构建你的网站并在 Apache 下运行它时,每次写入和读取都代表 Apache usergroup .

  • 分析你的问题:
  • 首先,您有以下错误:
    Change the permissions of the "app/cache/" directory so that the web server can write into it.
    Change the permissions of the "app/logs/" directory so that the web server can write into it.

    因为您的 app/cacheapp/logs文件夹不可写入您的 Apache usergroup .
  • 其次,通过执行:
    sudo chmod +a "_www allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
    sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs

    您正在修改 app/cache 的访问控制列表 (ACL)和 app/logs文件夹,以便向 whoami 授予一些权限(基本上是你)和到 _www .
    这种方法不起作用,可能有两个来源:
  • 您正在修改 ACL,但是您的内核和文件系统是否配置为考虑 ACL?
  • 您正在向 whoami 授予一些权限并到 _www ,但是您是否检查过您的 Apache 实例是否在这些用户之一下运行?
  • 第三,您的同事通过执行以下操作来解决问题:
    sudo chmod -R 777 app/cache 

    这种方法之所以有效,有两个原因:
  • 您将所有权限(读取和写入)授予您系统上的每个用户 ( 777 ),因此您确定至少您的 Apache 用户和组也具有写入 app/cache 所需的权限。 .
  • 您以递归方式( -R )执行此操作,因此在 app/cache 中创建的所有嵌套文件夹目录也受到新权限的关注。

  • 简单的解决方案:
  • 删除你的 app/cache 的内容和 app/logs文件夹:
    rm -rf app/cache/*
    rm -rf app/logs/*
  • 为您的 app/cache 授予所有权限(读取和写入)和 app/logs文件夹:
    chmod 777 app/cache
    chmod 777 app/logs

  • 评论:
  • 还有其他解决方案(难度更大),例如授予特定 Apache 用户和组的权限以及使用 ACL 进行微调。
  • 关于symfony - Symfony2 上的权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11475794/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com