Laravel 5显示ErrorException file_put_contents无法打开流:没有这样的文件或目录

时间:2017-10-26 17:04:06

标签: php windows laravel laravel-5

我在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中工作。

当我尝试清除应用程序缓存和查看缓存时,工匠与我交谈 - ...已清除。但缓存数据和视图存在于存储中。

如何解决此问题?

提前致谢!

24 个答案:

答案 0 :(得分:55)

解决此问题的最佳方法是,转到目录" laravel / bootstrap / cache"并删除co​​nfig.php文件。或者您可以像config.php.old一样重命名它 而你的问题将得到解决。 快乐的编码: - )

答案 1 :(得分:30)

通常应在生产部署例程中运行php artisan config:cache命令。我建议你

  1. 删除配置缓存文件
  2. 刷新应用程序缓存
  3. 创建缓存文件以更快地加载配置

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

  1. php artisan config:clear
  2. php artisan cache:clear
  3. php artisan config:cache

如果您无权访问服务器上的命令行,则可以通过在路由中添加以下内容来以编程方式执行命令:

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

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

我希望这会有所帮助。

答案 2 :(得分:27)

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

答案 3 :(得分:4)

此类问题通常在将一个服务器迁移到另一个服务器,一个文件夹迁移到另一个服当文件夹不同时,Laravel会保留缓存和配置(文件名),然后会出现此问题。

解决方案运行以下命令:

php artisan config:cache

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

答案 4 :(得分:3)

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

然后我运行 php artisan config:cache

这对我有用

答案 5 :(得分:2)

将/bootstrap/cache/config.php的名称更改为config.php.old对我不起作用 都无法通过artisan命令清除缓存

  1. php artisan config:clear
  2. php artisan cache:clear
  3. php artisan config:cache

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

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

答案 6 :(得分:2)

在共享主机的情况下,当您没有命令行访问权限时,只需导航到laravel / bootstrap / cache文件夹并删除(或重命名)config.php,一切就完成了!

答案 7 :(得分:2)

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

就是这样!

答案 8 :(得分:1)

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

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

php artisan view:clear

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

php artisan config:cache

答案 9 :(得分:1)

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

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

对我有用

答案 10 :(得分:1)

在我的情况下,php artisan命令无法修复任何问题。问题是/ storage文件夹的文件夹权限。该错误并不清楚。

答案 11 :(得分:1)

如果您在docker内部运行laravel,则访问其文件系统

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

接下来,导航至您的laravel项目根目录。确保您具有存储/框架文件夹:

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

而且它们应该可读可写。

答案 12 :(得分:1)

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

答案 13 :(得分:0)

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

  • composer install 根据安装供应商包 composer.lock(如果不存在则创建composer.lock),
  • 作曲家更新始终重新生成composer.lock并安装 基于composer.json

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

here

答案 14 :(得分:0)

这为我带来了魔力。 chmod -Rf 0777存储

答案 15 :(得分:0)

我用过Laravel 8,这是我的解决方法

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

对我有用

答案 16 :(得分:0)

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

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

答案 17 :(得分:0)

清除storage/framework/cache的内容对我有用。什么都没用...

答案 18 :(得分:0)

对我有用的解决方案是仅将应用程序用作管理员 如果您是

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

答案 19 :(得分:0)

解决此问题的最佳方法是转到目录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路由。

答案 20 :(得分:0)

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

  

存储/框架

四个基本文件夹是必需的缓存,会话,测试,视图

就我而言,缺少会话可能是在gitignore中。

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

因此,如果我们删除此问题,则所有丢失的文件夹都可以解决。

答案 21 :(得分:0)

Windows上的Apache + WSL

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

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

解决方案

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

$ php artisan optimize

对我来说足够了。

答案 22 :(得分:0)

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

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

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

我认为这个答案将帮助您解决问题。

答案 23 :(得分:-3)

我有类似的问题,因为.gitignore用于第一台机器上的/storage文件夹,然后克隆了第二台机器上的存储库,laravel是修订版以记下会话缓存

因此,手动创建文件夹/storage/sessions可能是一种解决方案..