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

Evg*_*niy 48 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
Run Code Online (Sandbox Code Playgroud)

file_put_contents(G:\project\storage\framework/sessions/aIXycR4LIAUBVIqZu0T590paOMIpV8vfZGIroEp0):
failed to open stream: No such file or directory
Run Code Online (Sandbox Code Playgroud)

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

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

我该如何解决这个问题?

提前致谢!

小智 84

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

  • 是的,这会有所帮助,但是清除缓存可以完成这项工作。在Vagrant Box之外运行`php artisan config:cache`将为应用程序重建路径。当我们在无业游民的框内运行应用程序时,路径不同于例如黄昏测试的路径。 (2认同)

Eli*_*noo 45

您通常应该将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
});
Run Code Online (Sandbox Code Playgroud)

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

我希望这是有帮助的.


Evg*_*niy 36

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


tya*_*ird 9

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


Aze*_*rah 8

Windows 上的 Apache + WSL

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

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

解决方案

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

$ php artisan optimize
Run Code Online (Sandbox Code Playgroud)

对我来说已经足够了。


Car*_*los 6

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

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

php artisan view:clear
Run Code Online (Sandbox Code Playgroud)

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

php artisan config:cache
Run Code Online (Sandbox Code Playgroud)

  • 如果您发布新答案,而已有多个已投票答案,则应添加更多解释,以便其他人可以从您的答案中学习 (2认同)

Bij*_*Oli 5

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

解决方案运行以下命令:

php artisan config:cache
Run Code Online (Sandbox Code Playgroud)

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


shi*_*dev 5

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

存储/框架

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

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

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

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

  • 这是真的 (2认同)