我遇到了缓存问题。我有一个项目并在当地工作。现在每当我上传到服务器并编辑.env
和config/app.php
文件时。它没有起到作用。
但是,如果我在本地设置.env
服务器配置并使用php artisan config:cache
清除缓存并将其上传到服务器。有用。我应该总是这样做吗?
所以每次我需要更改.env
我应该首先在本地更改它并清除缓存并上传到服务器中?或者是否有任何方法可以在服务器上直接命令。
再次,在另一个项目中。直接在服务器中编辑.env
和config/app.php
文件会立即生效。发生了什么事?
答案 0 :(得分:16)
使用php artisan config:cache
,首先清除缓存,然后设置缓存。你应该得到消息:
清除配置缓存!
配置缓存成功!
现在,如果你上传到服务器并从那里编辑.env
,由于配置被缓存,它不会立即生效。
解决方案:仅清除缓存:php artisan config:clear
和php 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调用转换为配置调用。
读取整个线程答案 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
文件中所做的更改生效。