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: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 文件夹:
-
缓存
会话
测试
观看次数
而且它们应该是可读可写的。
【讨论】:
【参考方案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】:对我有用的解决方案是以管理员身份提供应用程序 如果你是
-
在
mac
或linux
上使用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)
通过composer和windows 10安装Laravel 5.6之后显示5.5.32 [重复]