如何停止 Laravel 5 缓存配置?

58

在 Laravel 5 的文档中写道,php artisan config:cache 命令可以将所有应用程序配置存储到单个文件中,从而使应用程序加载速度更快。

我想知道两件事:

第一件事是如何强制 Laravel 停止缓存我的应用程序配置?例如,我希望 Laravel 从 .env 文件或者 database.php 配置文件中读取数据库名称和密码,而不是缓存的数据。

第二件事是,Laravel 缓存这个配置文件存储在哪里,以便我需要时可以删除它?我知道有一个 Artisan 命令可以清除缓存,即 php artisan config:clear,但我想知道这个文件存储在哪里。


唯一解决方案是不使用 Artisan。 - nodws
2个回答

68

由于配置文件的缓存不会自动进行,因此您无法停止其缓存。唯一需要做的事情就是不要调用config:cache

该文件本身可以在bootstrap/cache/config.php中找到。

注意,编译后的配置文件的位置最近已更改。您的位置也可能在vendor/config.phpstorage/framework/config.php中。但是,在新安装或运行composer update时,该文件应位于bootstrap/cache中。


对我来说工作很难,它是在 Laravel 5 中硬编码的,在 [ vendor/config.php ]。 - Ihab Shoully
32
如果在本地开发过程中调用了 config:cache,则可以通过删除 bootstrap/cache/config.php 文件来撤销此操作。否则,您可能会发现调用 getenv() 时无法返回所需的值。 - Sven P
我们在使用Envoyer(用于生产服务器)添加了 config:cache 作为发布后钩子时,遇到了这个问题。很奇怪的是,它没有完全从 .env 文件中获取所有的值。 - Attila Fulop
我正在使用Laravel 5.6,即使执行“rm bootstrap/cache/config.php”命令,我的配置也没有改变。 - Cobolt
3
我最终执行了 $config = require base_path('config/services.php')。过去我们曾多次遇到这个问题。只有 Laravel 可以让这么简单的事情变得棘手。 - Cobolt
调用 php artisan config:clear 命令也可以解决问题,直到你再次运行 php artisan config:cache 命令。然而,如果你的团队规模较大......最好还是引入一些检查器来确保缓存的存在和实时更新。 - Spencer O'Reilly

-1
根据这里的帖子:https://github.com/laravel/framework/issues/2501 引用:
“将缓存驱动程序更改为本地环境的数组。”
对我来说,这涉及将CACHE_DRIVER=array添加到我的.env文件中。然后,我的config/cache.php文件会捕获它,其中包括以下行:'default' => env('CACHE_DRIVER', 'file'), 显然,您可以直接在config/cache.php中更改它,但我更喜欢使用.env文件,以便我可以在开发站点上禁用它并在生产中启用它。

1
这完全不相关。config/cache.php 中的设置与 Laravel 的缓存功能有关,如此文档所述(https://laravel.com/docs/master/cache),但在缓存配置本身时并未使用。配置仅以 PHP 代码形式缓存在 bootstrap/cache/config.php 中。 - tjbp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接