部署期间执行config:cache命令

时间:2020-01-14 20:00:45

标签: laravel laravel-5 laravel-5.8

我在.env文件中有一个付款网关的秘密测试密钥。

APP_TIMEZONE = 'Africa/Lagos'
APP_PAYSTACK_KEY = sk_test_b6c0b4925403blablabla

原因是其他从事该项目的人可以使用自己的测试密钥。因此,在付款控制器中,我会像下面这样获得此密钥的值:

"authorization: Bearer " .env('APP_PAYSTACK_KEY' , 'sk_test_b6c0b4925403blablabla')

在部署期间,我打算运行config:cache,以使Laravel在获得所需的配置设置上不会花费很多时间。但是从Laravel文档中:

如果在部署期间执行config:cache命令 过程中,请确保您仅拨打env 功能从您的配置文件中。一旦配置 已被缓存,.env文件将不会加载,并且所有对 env函数将返回null。

所以我的问题是如何在配置文件中设置此APP_PAYSTACK_KEY以及如何在应用程序中的任何位置检索它?

1 个答案:

答案 0 :(得分:1)

您可以将paystack添加到您的config/services.php文件中:

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Third Party Services
    |--------------------------------------------------------------------------
    |
    | This file is for storing the credentials for third party services such
    | as Stripe, Mailgun, SparkPost and others. This file provides a sane
    | default location for this type of information, allowing packages
    | to have a conventional place to find your various credentials.
    |
    */

    // ...

    'paystack' => [
        'key' => env('APP_PAYSTACK_KEY', 'sk_test_b6c0b4925403blablabla'),
    ],
];

然后在您的控制器上调用config()帮助方法,而不是env()

"authorization: Bearer " .config('services.paystack.key')

现在,您可以安全地通过调用php artisan config:cache来缓存配置。