重新加载.env变量而无需重新启动服务器(Laravel 5,共享主机)

问题描述 投票:21回答:7

我的Laravel 5运行正常,直到配置数据库,然后发现此错误:

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

做一些研究似乎我太晚配置了MySQL访问,所以我应该重启服务器以获得正确的环境变量。好吧,我正在使用Dreamhost的共享服务器而我无法做到这一点。

我该如何解决这个问题?

谢谢

php mysql laravel laravel-5 dreamhost
7个回答
53
投票

如果您在服务器上运行php artisan config:cache,那么您的Laravel应用程序可以缓存您放入.env文件中的过时配置设置。

运行php artisan config:clear来解决这个问题。


12
投票

您的配置变量可能会被缓存。验证你的config/app.php以及你的.env文件,然后尝试

php artisan cache:clear

在命令行上。


5
投票

我知道这是旧的,但对于本地开发者来说,这就是生产.env文件的原因:

rm bootstrap/cache/config.php

然后

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

4
投票

简短的解决方案:

use Dotenv;

with(new Dotenv(app()->environmentPath(), app()->environmentFile()))->overload();
with(new LoadConfiguration())->bootstrap(app());

在我的情况下,我需要在以编程方式更改.env后重新建立数据库连接,但它不起作用,如果你遇到这个麻烦试试这个

app('db')->purge($connection->getName()); 

重新加载.env之后,那是因为Laravel App之前可以访问默认连接,而\Illuminate\Database\DatabaseManager需要重新读取配置参数。


3
投票

如果有人偶然发现这个问题谁不能重新加载他们的网络服务器(长时间运行的控制台命令,如队列运行)或需要在请求中重新加载他们的.env文件,我找到了一种方法来正确地重新加载laravel 5中的.env变量。

use Dotenv;
use InvalidArgumentException;

try {
    Dotenv::makeMutable();
    Dotenv::load(app()->environmentPath(), app()->environmentFile());
    Dotenv::makeImmutable();
} catch (InvalidArgumentException $e) {
    //
}

0
投票

需要说明的是,根据您的情况,您可以清除4种类型的缓存。

php artisan cache:clear

当您希望清除应用程序缓存时,可以在控制台中运行上述语句。它的作用是清除存储\ framework \ cache中的所有缓存。

php artisan route:cache

这会清除您的路由缓存。因此,如果您添加了新路由或更改了路径控制器或操作,则可以使用此路由重新加载。

php artisan config:cache 

这将清除env文件的缓存并重新加载它

php artisan view:clear 

这将清除应用程序的已编译视图文件。

对于共享主机

大多数共享主机提供程序不提供对系统的SSH访问。在这种情况下,您需要创建一个路由并调用以下行,如下所示:

Route::get('/clear-cache', function() {
    Artisan::call('cache:clear');
    return "All cache cleared";
});

-8
投票

config/database.php中,我将默认的数据库连接从mysql更改为sqlite。我删除了.env文件(实际上已重命名)并使用touch storage/database.sqlite创建了sqlite文件。迁移适用于sqlite。

然后我将config/database.php默认数据库连接切换回mysql并恢复了.env文件。迁移适用于mysql。

我觉得这没有意义。也许是服务器的东西。

© www.soinside.com 2019 - 2024. All rights reserved.