Laravel 5 show ErrorException file_put_content 未能打开流: 没有这样的文件或目录

我有一个关于 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

我正在用谷歌搜索问题决策,并找到有关正确权利的信息。所有的建议都是关于 Linux 的,但是我在办公室和家里都用 Windows 工作。

当我尝试清除应用程序缓存和查看缓存时,工匠告诉我——清除。但是缓存数据和视图存在于存储器中。

我怎样才能解决这个问题?

249324 次浏览

也许你的作曲家档案有问题,你可以试试:

  • 编写器 install 根据以下方法安装供应商软件包 Lock (如果不存在,则创建 comper.lock) ,
  • 函数 update 总是重新生成 comper.lock 并安装 基于 poser.json

  • 的可用包的最新版本
  • 作曲家 dump-autoload 不会下载任何东西,它只是重新生成 需要包含在项目中的所有类的列表(autoload _ classmap.php)。当您的项目中有一个新的类时,这是一个理想的选择。理想情况下,您可以执行作曲家 dump-autoload-o,用于 加快网页载入速度。它不是默认值的唯一原因,是因为它需要更长的时间来生成(但只是略微明显)

source

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

我也有过类似的问题。对于第一台机器上的 /storage文件夹的 gitignore,然后在第二台机器上克隆存储库和 laravel 进行了修订以写下会话缓存

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

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

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

解决方案运行以下命令:

php artisan config:cache

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

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

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

因此,我已经找到了解决这个问题的办法后,以上每一个步骤都失败了,这对我来说是完美的。我删除了 host_route/bootstrap/cache目录中的 cache.php文件。

您通常应该将 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路由。

尝试使用这些命令,这些命令在处理这些错误时很有用

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

php artisan view:clear

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

php artisan config:cache

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

Apache + WSL on windows

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

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

Solution

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

$ php artisan optimize

对我来说足够了。

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

进去

存储/架构

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

In My case sessions was missing might be in gitignore.

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

So any of the missing folder if we delete this problem can be solved.

在我的例子中,它不是任何可以用 php Artian 命令修复的东西。问题是/Storage 文件夹的文件夹权限。这个错误没有表明这一点。

If you are running laravel inside docker then access its filesystem

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

下一步导航到您的 laravel 项目根目录。请确保在 存储/架构文件夹内:

  1. 缓存
  2. 会议
  3. 测试
  4. 观点

它们应该既可读又可写。

对我有效的解决方案是仅仅作为管理员服务这个应用程序 如果你是的话

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

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

/bootstrap/cache/config.php的名字改成 config.php.old对我来说不起作用 都不能用命令工匠清除缓存

  1. 手工配置: 清除
  2. Php Artisan 缓存: 清除
  3. 缓存

And for some weird reason I can't change permission for the owner on the directories, so my solution was running my IDE (Visual Studio Code) as admin, and everything works.

My project is in an F:/ path of another disk.

Clearing the contents of storage/framework/cache did the trick for me.

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

后藤:
storage/framework/cache/data
设置权限目录数据为777

This did the magic for me. chmod -Rf 0777 storage

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

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

Works for me

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

Then I ran php artisan config:cache

当你将你的网站从本地服务器转移到实时服务器,反之亦然时就会发生这种情况。
Simply go to bootstrap/cache and delete config.php.

In my case, I set APP_DEBUG=false since it is a production server, I decided to set it back to true and then it showed Missing BC Math or GMP extension

这就是我如何解决我自己的问题,设置 APP_DEBUG=true可能不适合每个人。

我解决了这个问题,清除了以下内容:

/幼虫/存储/框架/视图

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

在我的例子中,这些命令并没有解决这个问题:

php artisan view:cache
php artisan route:cache
php artisan config:cache

我正在使用 Laravel8,在我的情况下,它似乎是一个权限问题。

我一路走来,但是没有得到答案。
I just rename cache folder in storage/framework/ to cache1 and solved my problem.

原因与缓存或权限有关。

首先,转到目录 Laravel/bootstrap/cache并从缓存中删除所有文件。

  1. php artisan cache:clear
  2. 手工配置: 清除
  3. php artisan config:cache

如果错误仍然发生。它可能与许可有关 让我们尝试下面的命令(在我的例子中,user & group of laravel 是 nginx)

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