【问题标题】:Laravel throws 'The bootstrap/cache directory must be present and writable' error after updateLaravel 更新后抛出“bootstrap/cache directory must be present and writable”错误
【发布时间】:2017-09-28 19:50:02
【问题描述】:

我使用了“composer update”,它更新了一些软件包。在更新过程中,网站仍然可以运行。但是,在它显示“已编译的服务文件已被删除”之后,网站并没有加载,而是显示:

Exception in ProviderRepository.php line 190:
The bootstrap/cache directory must be present and writable.

最奇怪的是,当我再次运行“composer update”时,网站再次开始工作,直到已编译的服务文件被删除,此时它再次抛出相同的错误。我已经尝试了出现此错误时应该做的通常的事情(chown -R all to the right user/group and chmod all files and folder 664 and 775)。

我不知道该怎么做了,因为错误似乎不“正确”..

【问题讨论】:

  • 我忘了说'composer update' 也更新了 laravel 框架,从 5.4.18 到 5.4.21
  • 就我而言mkdir -p bootstrap/cache/ && sudo chown -R user bootstrap/cache/

标签: php laravel laravel-5 composer-php


【解决方案1】:

在运行 composer update 后试试这个:

php artisan cache:clear

【讨论】:

  • Waaaay 为时已晚,但这是简单的解决方案。我忘了告诉你,但谢谢!
  • 此处适合发出警告。在生产停止运行它之前,问问自己是否真的想彻底清除缓存。否则,您最终可能会像发生在我身上一样瘫痪您的应用程序。
  • 不工作?我在引导文件夹中没有缓存文件夹
  • 你真的救了我的命!
  • 另外,如果这个解决方案不能立即工作 - 检查你是否有类似 OPCache 的运行,你可能需要重新启动你的 PHP-FPM/清除你的 OPCache 缓存。 :)
【解决方案2】:

在你的 Laravel 目录文件上,运行:

sudo chmod -R 777 bootstrap/cache/

【讨论】:

  • 我很确定 777'ing Web 服务器上的任何文件夹在安全方面都不是一个好主意。此外,775 应该而且已经奏效了。
  • 对不起,我不清楚。 775 过去工作过。目前我仍然有同样的问题,正如我在原帖中所说,我已经尝试了 775'ing 和 664'ing 一切。问题正是:我修复了错误所说的应该修复的内容,但我仍然遇到同样的问题。
  • 必须是sudo chmod -R 777 bootstrap 然后才能正常运行。
【解决方案3】:

短版:如果使用类似 AWS eb cli 的方式上传,请验证 bootstrap/cache 文件夹(不是说其内容)是否正在部署。


我的回答背后的一些背景

我正在使用 Amazon Web Services 的 Elastic Beanstalk 来托管我的 Laravel 项目。当我刚开始使用 Laravel 时,我对其功能并没有太多了解。两天前,我的新部署都在中途因 OP 的错误消息而崩溃。

那天早些时候,我意识到我没有使用

 php artisan config:cache

缓存配置以加快速度。我在 composer.json 的“post-install-cmd”和“post-update-cmd”子句中添加了相同的内容。
我还在 .ebignore 文件中添加了不上传 /bootstrap/cache 内容的声明(因为它的内容取决于环境aka 我的本地主机配置在我的生产服务器上没有意义)

facepalm 我没有意识到这会阻止 bootstrap/cache 文件夹被上传(就像 git 一样,eb cli 会忽略空文件夹)。
所以,当我在晚上开始部署时,部署本来是要崩溃的。

所以,现在我刚刚在 bootstrap/cache 中放置了空占位符(比如).gitkeep 文件。部署再次开始工作:)
(虽然问题很简单,但我在 ssh-ing 并挖掘 EBS EC2 实例睡了几个小时后才意识到原因~.~)

【讨论】:

  • 如果您能告诉我为什么您否决了我的回答,您将非常感激。因为据我所知,它解决了特定出现的问题。
【解决方案4】:

解决此错误的最佳方法是: 1.打开你的项目文件夹 2.移动到引导目录 3.创建一个名为“缓存”的空文件夹 4.然后做php artisan cache: clear 这肯定会起作用

【讨论】:

    【解决方案5】:

    我在 Windows 10 上以非提升模式(非管理员)使用 cmder。 命令 php artisan cache:clear 对我不起作用。 文件夹 bootstrap/cache 不存在。 我创建了该文件夹并从 bootstrap 和 bootstrap/cache 文件夹中删除了只读。 composer install 和 composer update 现在都可以正常工作了。

    【讨论】:

      【解决方案6】:

      对我来说,我在 bootstrap 中手动创建了缓存文件夹。

      【讨论】:

        【解决方案7】:
        sudo chmod -R ug+rwx storage bootstrap/cache
        

        希望这能解决问题。

        【讨论】:

          【解决方案8】:

          它适用于我在项目文件夹中运行

           sudo chmod -R 777 bootstrap/cache
          

          比运行

           composer update
          

          比运行

           cache:clear
          

          【讨论】:

          • 不是 bootstrap/cash 而是 bootstrap/cache
          【解决方案9】:

          在你运行作曲家更新后也试试这个:

          php artisan config:clear
          

          【讨论】:

            【解决方案10】:
            • 首先确保bootstrap/cache 目录存在,如果不创建一个新目录 mkdir -p bootstrap/cache/
            • 然后运行php artisan config:cache

            【讨论】:

              【解决方案11】:

              简单。有些应用程序可以阻止目录。像 google 驱动器同步器、One 驱动器同步器或任何其他使用 Windows 资源管理器的应用程序。

              删除缓存文件夹。再次创建它。

              【讨论】:

                【解决方案12】:

                尝试在你的项目根目录中执行以下命令

                composer update
                

                然后做

                composer dumpautoload
                

                这将避免弄乱缓存文件的必要性 这可能会导致全新的问题

                【讨论】:

                  【解决方案13】:

                  我不认为我之前做错了什么,并且没有任何与现金清算相关的游戏有意义。但正如它声称的那样, /bootstrap 内没有“缓存”文件夹。必须手动创建它。现在一切都好起来了

                  【讨论】:

                    【解决方案14】:

                    我必须创建这五个文件夹才能再次运行 artisan。

                    mkdir bootstrap/cache
                    mkdir storage/framework
                    mkdir storage/framework/cache
                    mkdir storage/framework/views
                    mkdir storage/framework/sessions
                    

                    在这个相关问题中找到了答案: "Please provide a valid cache path" error in laravel

                    【讨论】:

                      【解决方案15】:

                      如果使用 Web 服务器(例如 ApacheNginx)作为前端,解决方案是将目录 bootstrap/cache 归 Web 服务器组所有.对于 Nginx

                       $ sudo chgrp -R nginx bootstrap/cache
                      

                      【讨论】:

                        猜你喜欢
                        • 2023-01-04
                        • 2017-12-31
                        • 2021-11-22
                        • 2016-10-10
                        • 1970-01-01
                        • 2021-03-20
                        • 2017-11-06
                        • 2014-07-26
                        • 1970-01-01
                        相关资源
                        最近更新 更多