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

Posted

技术标签:

【中文标题】Laravel 5 显示 ErrorException file_put_contents 无法打开流:没有这样的文件或目录【英文标题】:Laravel 5 show ErrorException file_put_contents failed to open stream: No such file or directory 【发布时间】: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 artisan cache:clear”我在linux上,所以我不确定windows上的权限,但如果不是只读的,请检查文件夹属性(右键单击在文件夹-> 属性) @educolo 我不认为问题出在目录权限上,因为几个月没问题。 file_put_contents(meta/services.json): failed to open stream: Permission denied的可能重复 【参考方案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 中。缓存清除项目启动后。

【讨论】:

希望我能看到这个,因为这是我关于缺少服务提供商的问题的答案:***.com/questions/58192052/…【参考方案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并从缓存中删除所有文件。

    php artisan 缓存:清除 php 工匠配置:清除 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:clear2. php artisan cache:clear3. 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 文件夹:

    缓存 会话 测试 观看次数

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

【讨论】:

【参考方案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 清除缓存

    php 工匠配置:清除 php artisan 缓存:清除 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】:

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

    maclinux 上使用sudo php artisan serve 在 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 并解决了我的问题。

【讨论】:

这个和清缓存是一样的,已经提过***.com/a/64413142/2227743 是的,但清除缓存对我不起作用。重命名缓存文件夹后修复错误。

以上是关于Laravel 5 显示 ErrorException file_put_contents 无法打开流:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

Summernote 显示在所有位置(Laravel 5.2)

显示来自存储 laravel 5.3 的图像

Laravel 5,验证和显示用户角色

通过composer和windows 10安装Laravel 5.6之后显示5.5.32 [重复]

Laravel 5 和 Summernote - 上传的图片未显示

Laravel 5.2 错误消息未显示