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


84

我有一个关于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中工作。

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

我该如何解决这个问题?

提前致谢!


6
可以尝试清理缓存“ php artisan cache:clear”我在linux上,所以我不确定Windows的权限,但是如果不是read_only,请检查文件夹属性(右键单击folder-> properties)
educolo

@educolo我不认为问题出在目录权限上,因为几个月没关系。
Evgeniy

Answers:


148

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


7
是的,这会有所帮助,但是清除缓存可以完成这项工作。在“ Vagrant Box”外运行php artisan config:cache将为应用程序重建路径。当我们在无业游民的框内运行应用程序时,路径不同于例如黄昏测试的路径。
乔治·米洛纳斯

为什么laravel的配置会使laravel死掉?作品谢谢。
安德鲁

config:cache由于某些原因未修复。
安德鲁(Andrew)

对于当时无法通过SSH或通常无法通过SSH进行访问的用户,请使其干净,简单且直接。好答案!
lzoesch

config:clear除了重命名文件外,对我也有效,
Mohammed Omer

66

通常,应将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从浏览器调用路由。

我希望这是有帮助的。


49

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


这解决了我的问题,在许多建议的解决方案失败之后,谢谢
阿贡·萨吉塔

@AgungSagita没问题;)
Evgeniy

您是救生员
Festus Yuma

尝试了许多其他替代方法后,这解决了我的问题。谢谢:)
Binmosa

希望我能看到这是对缺少服务提供商的问题的答案:stackoverflow.com/questions/58192052/…–
j3py

14

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

存储/框架

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

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

因此,我手动创建了会话文件夹并刷新了浏览器,然后它开始工作了。

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


3
这一个是真实的
艾哈迈德·贾米勒铝Rasyid


6

Windows上的Apache + WSL

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

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

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

$ php artisan optimize

对我来说足够了。


我遇到了同样的问题。我正在运行Windows,也在VMWare虚拟机上运行Linux实例。这使我可以在Windows和Linux上进行测试,但是当我php artisan config:cache在Windows上运行命令时,我的Linux将不再加载应用程序的网页。进入bootstrap / cache文件夹并删除那里的config.php文件即可解决该问题。
David Tran

4

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

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

php artisan view:clear

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

php artisan config:cache

2
如果您在已经有多个建议答案的情况下发布新答案,则应在其中添加更多说明,以便其他人可以从您的答案中学到
Nico Haase

4

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


2

解决此问题的最佳方法是转到目录,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 从浏览器调用 路由。


2

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

  1. PHP的工匠配置:清除
  2. PHP的工匠缓存:清除
  3. PHP的工匠配置:缓存

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

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


1

也许您的作曲家文件有问题。您可以尝试:

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

  • 作曲家dump-autoload不会下载任何东西。它只是重新生成项目中需要包含的所有类的列表(autoload_classmap.php)。当您在项目中有新课程时的理想选择。理想情况下,您可以执行composer dump-autoload -o,以更快地加载网页。它不是默认值的唯一原因是,它需要花费更长的时间来生成(但仅会稍微引起注意)

资源


不幸的是,这没有帮助。我会尝试您的所有建议。
Evgeniy

抱歉:(您在原始帖子中说,您认为这可能是权限/权限。如果您认为这可能是问题,则此帖子包含有关更改文件和文件夹的权限的很多信息。窗户,所以我对此不太了解。希望它能为您解决
Rachael MacKeigan

我认为问题不在于目录权限,因为几个月没关系。我记得,我之前曾更新过一些Laravel软件包,然后停止工作。但是第二天在办公室的项目就开始了。
Evgeniy

1

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

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

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

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


1

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


1

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

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

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

  1. 快取
  2. 会议
  3. 测试
  4. 意见

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


1

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


0

由于/storage第一台计算机上的文件夹.gitignore,我遇到了类似的问题,然后在第二台计算机上克隆了存储库,而laravel被修订以记下会话缓存

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




0

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

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

对我有用


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.