【问题标题】:Laravel 5 show ErrorException file_put_contents failed to open stream: No such file or directoryLaravel 5 显示 ErrorException file_put_contents 无法打开流:没有这样的文件或目录
【发布时间】:2018-04-08 04:05:31
【问题描述】:

我有一个关于 Laravel 5 的项目,我也在办公室和家里使用它。它工作正常,但最近在家里它停止工作了。 Laravel 给我看两个 ErrorException

file_put_contents(G:\project\storage\framework\views/751d8a0fd8a7d4138c09ceb6a34bb377aa2d6265.php):
failed to open stream: No such file or directory

file_put_contents(G:\project\storage\framework/sessions/aIXycR4LIAUBVIqZu0T590paOMIpV8vfZGIroEp0):
failed to open stream: No such file or directory

我正在通过 Google 搜索问题决定并查找有关正确权利的信息。所有的建议都是关于 Linux 的,但我在办公室和家里也在 Windows 下工作。

当我尝试清除应用程序缓存和视图缓存时,工匠会跟我说话 - ...已清除。但缓存数据和视图存在于存储中。

我该如何解决这个问题?

【问题讨论】:

标签: php windows laravel laravel-5


【解决方案1】:

解决此问题的最佳方法是,转到目录laravel/bootstrap/cache 并删除config.php 文件。或者你也可以像config.php.old一样重命名它 您的问题将得到解决。

【讨论】:

  • 是的,这会有所帮助,但清除缓存可以完成这项工作。在 Vagrant Box 之外运行php artisan config:cache 将为应用程序重建路径。例如,当我们在 vagrant box 中运行应用程序时,路径与黄昏测试的路径不同。
  • 为什么 laravel 的配置会让 laravel 死掉?工作谢谢。
  • config:cache 由于某种原因没有修复。
  • 干净、简单、直接,适用于当时或一般情况下无法通过 SSH 访问的用户。很好的答案!
  • config:clear 对我有用,除了重命名文件也有用,
【解决方案2】:

您通常应该在生产部署例程中运行 php artisan config:cache 命令。为了解决您的问题,我建议您重新创建缓存文件,以便更快地加载配置。

为此,请在命令行上运行以下 Artisan 命令

  • php artisan cache:clear
  • php artisan config:cache

您可以通过将以下内容添加到您的路线以编程方式执行该命令:

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    $exitCode = Artisan::call('config:cache');
    return 'DONE'; //Return anything
});

然后从浏览器调用clear-cache 路由。

【讨论】:

    【解决方案3】:

    经过一些研究,我了解到 - 我有非常相似但不同的根项目位置,并且它缓存在 /bootstrap/cache 中。缓存清除项目启动后。

    【讨论】:

    【解决方案4】:

    实际上,当我将项目从服务器移动到本地时,我遇到了这个问题。

    存储/框架

    需要缓存、会话、测试、视图四个基本文件夹

    在我的情况下,会话丢失可能在 gitignore 中。

    所以我手动创建了会话文件夹并刷新了浏览器,它正在工作。

    所以如果我们删除这个问题,任何丢失的文件夹都可以解决。

    【讨论】:

      【解决方案5】:

      我通过创建storage\framework\sessions 文件夹解决了这个问题。

      【讨论】:

      • 这个文件夹之前在这个路径中,我只是清空了它,它解决了我的问题。
      【解决方案6】:

      Windows 上的 Apache + WSL

      这是一个愚蠢的错误,与其他答案相比,答案不同,但我会添加它,因为它发生在我身上。

      如果你使用 WSL(windows 上的 linux bash)来管理你的 laravel 应用程序,同时使用你的 windows apache 来运行你的服务器,那么在 wsl 中运行任何缓存命令都会存储 linux 路径 而不是 windows 路径 到会话和其他文件夹。

      解决方案

      只需在 powershell 中运行缓存清除命令,而不是在 WSL 中。

      $ php artisan optimize
      

      对我来说已经足够了。

      【讨论】:

      • 我遇到了同样的问题。我在 VMWare 虚拟机上运行 Windows 和 Linux 实例。这允许我在 Windows 和 Linux 上进行测试,但是当我在 Windows 上运行 php artisan config:cache 命令时,我的 Linux 将不再加载应用程序的网页。进入 bootstrap/cache 文件夹并删除那里的 config.php 文件解决了它。
      【解决方案7】:

      这种类型的问题通常发生在将一台服务器迁移到另一台服务器、将一个文件夹迁移到另一台服务器时。当文件夹不同时,Laravel 保留缓存和配置(文件名)就会出现这个问题。

      解决方案运行以下命令:

      php artisan config:cache
      

      https://laravel.com/docs/5.6/configuration#configuration-caching

      【讨论】:

        【解决方案8】:

        尝试使用这些对这些错误有用的命令

        路径\项目\存储\框架\视图...

        php artisan view:clear
        

        路径\项目\存储\框架/会话...

        php artisan config:cache
        

        【讨论】:

        • 如果您在已经有多个赞成的答案的情况下发布新答案,您应该添加更多解释,以便其他人可以从您的答案中学习
        【解决方案9】:

        我删除了文件/public_html/bootstrap/cache/config.php

        然后我跑了php artisan config:cache

        【讨论】:

          【解决方案10】:

          如果您没有命令行访问权限的共享主机,只需导航到laravel/bootstrap/cache 文件夹并删除(或重命名)config.php

          【讨论】:

            【解决方案11】:

            当您将网站从本地服务器转移到实时服务器时会发生这种情况,反之亦然。
            只需转到bootstrap/cache 并删除 config.php。

            【讨论】:

            • 最佳答案似乎已经暗示了这一点。尝试仅在发布帖子答案时添加新信息。
            【解决方案12】:

            原因与缓存或权限有关。

            首先,进入目录laravel/bootstrap/cache并从缓存中删除所有文件。

            1. php artisan 缓存:清除
            2. php 工匠配置:清除
            3. php 工匠配置:缓存

            如果错误仍然发生。它可能与许可有关 让我们试试下面的命令(在我的例子中,laravel 的用户和组是 nginx)

            sudo chgrp -R nginx storage bootstrap/cache
            sudo chmod -R ug+rwx storage bootstrap/cache
            

            【讨论】:

              【解决方案13】:

              解决此问题的最佳方法是,转到目录laravel/bootstrap/cache 并从缓存中删除所有文件。

              为此,请在命令行上运行以下 Artisan 命令
              1. php artisan config:clear
              2. php artisan cache:clear
              3. php artisan config:cache

              在您的面板或服务器中,您可以通过将以下内容添加到您的路由来执行命令:

                  Route::get('/clear-cache', function() {
                      $run = Artisan::call('config:clear');
                      $run = Artisan::call('cache:clear');
                      $run = Artisan::call('config:cache');
                      return 'FINISHED';  
                  });
              

              然后从浏览器调用www.yourdomain.com/clear-cache 路由。

              【讨论】:

                【解决方案14】:

                如果你在 docker 中运行 laravel,那么访问它的文件系统

                $ docker exec -it name-of-laravel-container /bin/bash
                

                接下来导航到您的 laravel 项目根目录。确保您有 storage/framework 文件夹:

                1. 缓存
                2. 会话
                3. 测试
                4. 观看次数

                而且它们应该是可读可写的。

                【讨论】:

                  【解决方案15】:

                  如果没有任何效果,请在生产环境中尝试以下操作

                  1-

                  composer install --optimize-autoloader --no-dev
                  

                  2-

                  php artisan cache:clear
                  

                  3-

                  php artisan config:clear
                  

                  4-

                  php artisan view:clear
                  

                  5-

                  php artisan config:cache
                  

                  6-

                  php artisan route:cache
                  

                  为我工作

                  【讨论】:

                    【解决方案16】:

                    /bootstrap/cache/config.php 的名称更改为config.php.old 对我不起作用 既不使用命令 artisan 清除缓存

                    1. php 工匠配置:清除
                    2. php artisan 缓存:清除
                    3. php 工匠配置:缓存

                    由于某些奇怪的原因,我无法更改目录所有者的权限,因此我的解决方案是以管理员身份运行我的 IDE(Visual Studio Code),一切正常。

                    我的项目在另一个磁盘的 F:/ 路径中。

                    【讨论】:

                      【解决方案17】:

                      这个问题的原因是本地主机中的缓存文件。据此,我尝试了以下几种方法来清除项目中的缓存,但每次都失败了。

                      • 试图通过更改 web.php 文件(使用工匠代码)来清除 cahe 命令
                      • 尝试通过连接 SSH(通过 PUTTY)清除缓存
                      • 试图在创建新的 Public 目录中的子域中托管我的项目

                      因此,在上述每个步骤都失败后,我找到了解决此问题的方法,并且对我来说非常有效。我删除了 host_route/bootstrap/cache 目录中的 cache.php 文件。

                      【讨论】:

                        【解决方案18】:

                        您的作曲家文件可能存在问题。你可以试试:

                        • composer install 根据安装供应商包 composer.lock(如果不存在,则创建 composer.lock),
                        • composer update 总是重新生成 composer.lock 并安装 基于 composer.json 的可用软件包的最新版本

                        • composer dump-autoload 不会下载任何东西。它只是再生 需要包含在项目中的所有类的列表(autoload_classmap.php)。非常适合在项目中有新课程时使用。理想情况下,您执行 composer dump-autoload -o , 更快地加载您的网页。它不是默认的唯一原因是因为它需要更长的时间来生成(但只是稍微明显)

                        source

                        【讨论】:

                        • 不幸的是,它没有帮助。我尝试了你所有的建议。
                        • 对不起 :( 你在原来的帖子中说你认为这可能是权利/权限。这个post 有很多关于更改文件和文件夹权限的信息,如果你认为这可能是问题所在。我不使用 Windows,所以我对此了解不多。希望它对你有用。
                        • 我认为问题不在于目录权限,因为几个月没问题。我记得,我之前更新了一些 Laravel 包,然后它就停止了工作。但是第二天在办公室项目开始很好。
                        【解决方案19】:

                        在我的情况下,php artisan 命令无法解决任何问题。问题是 /storage 文件夹的文件夹权限。错误并没有说清楚。

                        【讨论】:

                          【解决方案20】:

                          对我有用的解决方案是以管理员身份提供应用程序 如果你是

                          1. maclinux 上使用sudo php artisan serve
                          2. 在 Windows 上尝试以 adminstrator 的形式打开 CMD,然后转到项目目录并运行 php artisan serve

                          【讨论】:

                            【解决方案21】:

                            我遇到了类似的问题,因为第一台机器上 /storage 文件夹的 .gitignore,然后在第二台机器上克隆了存储库,而 laravel 被修改为写下会话缓存

                            所以,手动创建文件夹/storage/sessions 可能是一个解决方案..

                            【讨论】:

                              【解决方案22】:

                              这对我来说很神奇。 chmod -Rf 0777 存储

                              【讨论】:

                                【解决方案23】:

                                在我的例子中,我设置了APP_DEBUG=false,因为它是一个生产服务器,我决定将它设置回true,然后它显示Missing BC Math or GMP extension

                                这就是我解决自己问题的方法,设置APP_DEBUG=true 可能并不适合所有人。

                                【讨论】:

                                  【解决方案24】:

                                  我通过清除以下内容解决了:

                                  /laravel/storage/framework/views

                                  然后在该文件夹中再次创建所有视图。

                                  在我的情况下,这些命令没有解决它:

                                  php artisan cache:clear
                                  php artisan config:cache
                                  

                                  我正在使用 Laravel 8,就我而言,这似乎是权限问题。

                                  【讨论】:

                                    【解决方案25】:

                                    我使用 Laravel 8,这是我的解决方案:

                                    转到:
                                    存储/框架/缓存/数据
                                    设置权限目录数据为777

                                    【讨论】:

                                      【解决方案26】:

                                      清除storage/framework/cache 的内容对我有用。

                                      【讨论】:

                                        【解决方案27】:

                                        我一路走来,却没有得到答案。
                                        我只是将storage/framework/ 中的缓存文件夹重命名为cache1 并解决了我的问题。

                                        【讨论】:

                                        猜你喜欢
                                        • 2015-11-14
                                        • 2014-09-05
                                        • 2018-10-03
                                        • 2017-07-06
                                        • 2013-01-24
                                        • 2018-12-01
                                        • 1970-01-01
                                        • 2017-04-21
                                        • 1970-01-01
                                        相关资源
                                        最近更新 更多