如何阻止 Laravel 5 缓存配置?

Posted

技术标签:

【中文标题】如何阻止 Laravel 5 缓存配置?【英文标题】:How to stop Laravel 5 from caching configurations? 【发布时间】:2015-06-26 02:17:57 【问题描述】:

在 Laravel 5 文档中写到 php artisan config:cache 将所有应用程序配置存储到一个文件中,这使得应用程序加载速度更快。

我想知道两件事:

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

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

【问题讨论】:

这是个好问题 +1 【参考方案1】:

根据这里的帖子:https://github.com/laravel/framework/issues/2501

“将缓存驱动程序更改为本地环境的数组。”

对我来说,这涉及将CACHE_DRIVER=array 添加到我的.env 文件中。然后由我的 config/cache.php 文件获取,其中包括以下行: 'default' => env('CACHE_DRIVER', 'file'),

显然您可以直接在 config/cache.php 中更改它,但我更喜欢使用 .env 文件,这样我就可以为开发站点禁用它并为生产启用它。

【讨论】:

这完全不相关。 config/cache.php 中的设置与 here 中记录的 Laravel 的缓存功能相关,在缓存配置本身时使用。配置只会以 PHP 代码的形式缓存在 bootstrap/cache/config.php 中。【参考方案2】:

您不能停止配置文件的缓存,因为它不会自动发生。你唯一需要做的就是不要打电话给config:cache

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

注意编译的配置文件的位置最近发生了变化。你的也可能在vendor/config.phpstorage/framework/config.php。全新安装或运行 composer update 时,文件应该在 bootstrap/cache 中。

【讨论】:

为我工作,它在 Laravel 5 中硬编码,位于 [vendor/config.php] 如果您在本地开发期间确实调用了config:cache,您可以通过删除bootstrap/cache/config.php 文件来撤消此操作。否则,您可能会遇到调用getenv() 不会返回所需值 当我们在 envoyer(用于生产服务器)中添加 config:cache 作为部署后挂钩时遇到了这个问题。奇怪的是,它并没有从 .env 文件中获取所有值。 我使用的是 Laravel 5.6,即使在 rm bootstrap/cache/config.php 之后我的配置也没有改变。 我最终选择了$config =require base_path('config/services.php');。过去我们曾为此苦苦挣扎过几次。只有 laravel 可以把这么简单的事情弄成问题。

以上是关于如何阻止 Laravel 5 缓存配置?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 缓存操作

Laravel 缓存操作

Redis 连接 [缓存] 未配置 laravel 错误

关于laravel 5.3 使用redis缓存出现 找不到Class 'PredisClient' not found的问题

Lumen如何缓存配置?

laravel 5 优化