总是要在.env中清除缓存?

时间:2017-03-26 07:10:35

标签: laravel laravel-5.3

我遇到了缓存问题。我有一个项目并在当地工作。现在每当我上传到服务器并编辑.envconfig/app.php文件时。它没有起到作用。

但是,如果我在本地设置.env服务器配置并使用php artisan config:cache清除缓存并将其上传到服务器。有用。我应该总是这样做吗?

所以每次我需要更改.env我应该首先在本地更改它并清除缓存并上传到服务器中?或者是否有任何方法可以在服务器上直接命令。

再次,在另一个项目中。直接在服务器中编辑.envconfig/app.php文件会立即生效。发生了什么事?

8 个答案:

答案 0 :(得分:16)

使用php artisan config:cache,首先清除缓存,然后设置缓存。你应该得到消息:

  

清除配置缓存!

     

配置缓存成功!

现在,如果你上传到服务器并从那里编辑.env,由于配置被缓存,它不会立即生效。

解决方案:仅清除缓存:php artisan config:clearphp artisan cache:clear。现在,您可以立即上传到服务器并从服务器编辑.env文件,因为未缓存配置。

答案 1 :(得分:13)

检查.env文件中的APP_ENV。如果它正在生产那么是的,laravel缓存它。您应该在更改配置之前运行这些命令:

php artisan cache:clear
php artisan config:clear
php artisan route:clear

然后在更改后运行这些:

php artisan config:cache
php artisan route:cache
php artisan optimize

答案 2 :(得分:2)

php artisan config:clear

php artisan cache:clear 

php artisan config:cache

如果在部署过程中使用config:cache命令,则必须确保只从配置文件中调用env函数,而不从应用程序中的其他任何地方调用。

如果要从应用程序内部调用env,则强烈建议您向配置文件中添加适当的配置值,然后从该位置调用env,从而使您可以将env调用转换为配置调用。

通过https://github.com/laravel/framework/issues/21727

读取整个线程

答案 3 :(得分:1)

要清除缓存问题,您可以删除位于 bootstrap 文件夹中的缓存文件夹中的所有文件和文件夹。删除里面的文件和文件夹 路径引导/缓存

答案 4 :(得分:1)

是的,

配置文件,查看文件,...可以缓存在laravel中以优化和加速。

如果您更改了 config.php.env 中的某些内容,则必须运行 php artisan config:cache

但我写了一个钩子,它会在任何推送到服务器后运行(使用 git)

如果您使用 git 作为版本控制,您可以将这些添加到服务器 .git 目录中:

./.git/hooks/post-receive :

#!/bin/bash

cd ..
composer install --optimize-autoloader --no-dev
php artisan config:cache
php artisan route:cache
php artisan view:cache

exit 0

这将在每次推送到服务器后运行。

答案 5 :(得分:0)

如果您将队列驱动程序与管理程序一起使用,则您缓存在队列函数中的.env变量将被缓存,直到您重新启动管理程序为止。
就我而言,我更改了一些邮件env变量,并且感到困惑,为什么清除缓存/配置在远程服务器上不起作用,而本地服务器却能正常工作,直到我意识到本地队列驱动器正在同步处理邮件,而远程服务器正在使用发送邮件的队列。

答案 6 :(得分:0)

我尝试了以下方法,并且对我有用

1.first turn off artisan server and make changes to env file and

2.run these commands

php artisan cache:clear
php artisan config:clear
php artisan route:clear

3.run php artisan server

现在应该工作

答案 7 :(得分:0)

只需加上我的2美分并完成@tanderson的回答,我就遇到了同样的情况,首先我用Laradock部署了Laravel应用程序,并使用Mailtrap测试了电子邮件发送。

然后,当我将.env凭据更改为其他SMTP电子邮件服务时,电子邮件通知仍然发送到Mailtrap。

首先,我在Laravel容器(工作区)中执行以下命令:

$ php artisan config:cache

this answer中所述,指出您应该

重要

仅在配置文件中使用env()

否则,config:cache将永远无法在生产环境中使用!

然后,就像@tanderson所说的那样,我不得不重新加载主管容器。幸运的是,我不必重新启动容器:

$ sudo docker container exec php-worker supervisorctl reread
$ sudo docker container exec php-worker supervisorctl update
$ sudo docker container exec php-worker supervisorctl restart all
$ sudo docker container exec php-worker supervisorctl
$ sudo docker container exec php-worker supervisorctl status

之后,我尝试发送电子邮件,然后在.env文件中所做的更改生效。