【问题标题】:RuntimeException: Unable to create the cache directory (/var/www/sonata/app/cache/dev)RuntimeException: 无法创建缓存目录 (/var/www/sonata/app/cache/dev)
【发布时间】:2013-12-06 07:56:56
【问题描述】:

我安装了 Sonata 管理包
安装后我刷新我的页面有缓存问题然后我使用以下命令删除缓存:

rm -rf app/cache app/log

然后我重新创建目录:

mkdir app/cache app/log

但我收到以下错误:

运行时异常:无法创建缓存目录 (/var/www/sonata/app/cache/dev)。

【问题讨论】:

    标签: php symfony logging


    【解决方案1】:

    看起来像是文件/目录权限问题。该目录必须可由网络服务器写入。创建目录后,您应该使用

    调整权限
    chown -R www-data:www-data app/cache
    chown -R www-data:www-data app/log
    

    或者对于 Symfony 4+

    chown -R www-data:www-data var
    

    这仅适用于 linux 系统。用户和组取决于您的分配。在 DebianUbuntu 上应该是 www-data,在 CentOS 上是 afaik apache

    另一种解决方案是不删除整个文件夹,而只删除它们的内容

    $ rm -rf app/log/* app/cache/*

    但请小心使用此命令。

    【讨论】:

    • 我在 Ubuntu Server 16.04 上遇到了同样的问题,这样做chown -R www-data:www-data var/logs var/cache var/sessions 解决了我的问题,不要忘记清除缓存..
    【解决方案2】:

    对于 centos:

    chown -R apache:apache app/cache
    

    如果你是来这里寻求 Symfony 帮助的,如果你删除了整个 app/logs 文件夹,你可能也必须这样做

    chown -R apache:apache app/logs
    

    【讨论】:

    • 它有效 Broks :) 谢谢,顺便问一下,你能解释一下什么是 apache:apache 吗?为什么不是当前用户?
    【解决方案3】:

    更改 CHMOD 可能会有所帮助,但如果缓存在开发过程中让您烦恼,您可以将其停用。 导航到您的应用配置文件(位于根目录的 ../app/config/config.yml 中)。滚动到 twig 配置设置(在 twig 下:)并将缓存值(应该指向缓存目录)更改为 false,如下所示:

    twig:
        cache:  false
    

    如果您没有看到任何缓存配置条目,只需添加上面的行。

    【讨论】:

    • 当然,一旦应用准备好投入生产,您就需要重新激活它
    【解决方案4】:

    可能发生的情况是您正在尝试在 apache/nginx 下创建文件。默认情况下,apache 或 nginx 的 umask 设置为 0022。

    发件人:http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

    解释八进制umask模式022和002

    如前所述,如果不更改默认设置,则使用访问模式 666 创建文件,使用 777 创建目录。在此示例中:

    普通用户使用的默认 umask 002。使用此掩码,默认目录权限为 775,默认文件权限为 664。 root 用户的默认 umask 为 022,结果进入默认目录权限为 755,默认文件权限为 644。 对于目录,基本权限是 (rwxrwxrwx) 0777,对于文件,它们是 0666 (rw-rw-rw)。

    您需要手动将 umask 设置为 0002,并将其重置为之前的设置,然后才能创建目录。

    【讨论】:

      【解决方案5】:

      我解决了更改用户和文件夹组var/cachevar/logs,然后我清理了缓存:

      sudo chown -R www-data:www-data var/logs
      sudo chown -R www-data:www-data var/cache
      
      sudo rm -rf var/logs/* var/cache/*
      

      【讨论】:

      • 小心sudo rm -rf /var/logs/* /var/cache/* 你正在删除根缓存!!删除var 之前的斜线
      • 感谢@Vural Acar 的反馈,答案已编辑
      【解决方案6】:

      这个解决方案是正确的:https://stackoverflow.com/a/20128013/2400373

      但有必要更改Symfony3 中的两个命令: 首先你应该在项目的文件夹中:

      $ sudo chown -R www-data:www-data var/cache
      $ sudo chown -R www-data:www-data var/logs
      

      删除缓存后:

      $ sudo rm -rf var/cache/*
      $ sudo rm -rf var/logs/* 
      

      问候

      【讨论】:

        【解决方案7】:

        ma​​c 计算机上是:

        $ sudo chown -R _www:_www var/cache
        $ sudo chown -R _www:_www var/logs
        

        如果以上都对您不起作用,请在您的 php 文件中调用“phpinfo()”并查找“用户/组”值。这是要授予权限的用户组。

        【讨论】:

          【解决方案8】:

          我在使用 PHP symfony 作为错误图片时发现了类似的问题。 运行命令后找到了

          php bin/console cache:clear
          

          我通过删除文件夹 /app/var/cache

          中的所有内容解决了这个问题

          【讨论】:

            【解决方案9】:

            还要检查路径。就我而言,我有

            return dirname(__DIR__) . '../../../../var/cache/

            而不是

            return dirname(__DIR__) . '/../../../../var/cache/(缺少/

            【讨论】:

              【解决方案10】:

              主要是权限问题。

              我已经在 MAC 上使用命令解决了它:$ sudo chmod -R 777 <path/to/cache/directory>

              你可以试试:$ sudo chmod -R 777 /var/www/sonata/app/cache

              【讨论】:

                【解决方案11】:

                概括一下,让每个人都可以使用这两个命令可以解决每个人的问题。

                sudo chown -R $USER var/cache
                sudo chown -R $USER var/logs
                

                更多信息:$USER 会自动替换您的用户名,以便任何人都可以使用。

                【讨论】:

                  【解决方案12】:

                  我在使用 phpmyadmin 5.1.0 时遇到了这个问题

                  解决办法是指定tmp目录的完整路径,而不是相对路径。

                  在配置文件config.inc.php我有:

                  $cfg['TempDir'] = 'tmp'
                  

                  我改成:

                  $cfg['TempDir'] = '/usr/share/phpmyadmin/tmp'
                  

                  似乎问题与某些允许路径的“匹配”有关。 也许这个解决方案可以外推到使用 twig 的其他软件。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2018-03-09
                    • 2012-01-16
                    • 1970-01-01
                    • 2017-10-09
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-08-11
                    • 2017-08-08
                    相关资源
                    最近更新 更多