【问题标题】:Symfony2 - Deployment cache no setfaclSymfony2 - 部署缓存没有 setfacl
【发布时间】:2012-07-21 13:36:40
【问题描述】:

我正在尝试部署我的第一个 Symfony2 应用。

尝试访问时出现空白屏幕。

查看日志:

$ sudo tail -f /var/log/apache2/error.log

[...] 未捕获的异常“RuntimeException”和消息“无法写入缓存文件 [...]”

尝试将良好的权限放在缓存和日志上

$ sudo chmod +a "www-data allow delete,write,[...]" app/cache app/logs

chmod:无效模式:`+a'

尝试使用 setfacl

$ sudo setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs

setfacl:应用程序/缓存:不支持操作
setfacl: app/logs: 不支持操作

我想我的分区没有安装 acl 或类似的东西。

我不能简单地 chown www-data 缓存和日志吗?

【问题讨论】:

    标签: debugging caching deployment symfony


    【解决方案1】:

    要使用setfacl,首先需要安装acl工具:

    # Provided Apt can be used for package management
    $ sudo apt-get install acl
    

    然后重新挂载包含您的 symfony2 项目的磁盘分区:

    # Remount the partition containing your Symfony2 application
    # e.g. we could remount the root (/) partition   
    $ sudo mount -o remount,acl / # 
    
    # we could also remount the /var partition in our app lives in /var/www  
    $ sudo mount -o remount,acl /var  # 
    

    http://symfony.com/doc/2.0/book/installation.html#configuration-and-setup https://help.ubuntu.com/community/FilePermissionsACLs

    【讨论】:

    • 感谢您的回答,但可以更好地解释“当这个分区是/”是什么意思?您能举个例子吗?在什么情况下参数“/”应该不同?跨度>
    • This doc(适用于 Ubuntu)帮助我了解如何使用 ACL
    【解决方案2】:

    由于您不应该在部署服务器上进行开发,因此只需将整个应用程序交给www-data 用户:

    sudo chown -R www-data:www-data /path/to/the/root/of/your/app
    

    【讨论】:

    • 这就是我最终所做的。谢谢
    • 但是有些函数似乎需要写入缓存和日志,比如php app/console doctrine:schema:create ...
    • 您还可以在 app_dev.php、app.php 和控制台中取消注释/添加 umask(0)。 Symfony 的开发人员不推荐它,但如果您无权访问 facl 并且无法获得正确运行的权限,这将解决问题。
    猜你喜欢
    • 2014-04-13
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2015-05-29
    相关资源
    最近更新 更多