我的Laravel 5运行正常,直到配置数据库,然后发现此错误:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
做一些研究似乎我太晚配置了MySQL访问,所以我应该重启服务器以获得正确的环境变量。好吧,我使用的是Dreamhost的共享服务器而我无法做到。
我该如何解决这个问题?
由于
答案 0 :(得分:52)
如果您在服务器上运行php artisan config:cache
,那么您的Laravel应用可以缓存您放在.env
文件中的过时配置设置。
运行php artisan config:clear
来解决此问题。
答案 1 :(得分:12)
您的配置变量可能会被缓存。验证您的config/app.php
以及.env
文件,然后尝试
php artisan cache:clear
在命令行上。
答案 2 :(得分:3)
如果有人偶然发现这个问题谁不能重新加载他们的网络服务器(长时间运行的控制台命令,如队列运行)或需要在请求中重新加载他们的.env文件,我找到了一种方法来正确地重新加载.lav变量在laravel 5
use Dotenv;
use InvalidArgumentException;
try {
Dotenv::makeMutable();
Dotenv::load(app()->environmentPath(), app()->environmentFile());
Dotenv::makeImmutable();
} catch (InvalidArgumentException $e) {
//
}
答案 3 :(得分:2)
我知道这很老了,但是对于本地开发人员来说,这是将事情返回到生产.env文件的原因:
rm bootstrap/cache/config.php
然后
php artisan config:cache
php artisan config:clear
php artisan cache:clear
答案 4 :(得分:0)
要清除,您可以根据情况清除四种类型的缓存。
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";
});
答案 5 :(得分:-8)
在søg
中,我将默认的数据库连接从mysql更改为sqlite。我删除了config/database.php
文件(实际上已将其重命名)并使用.env
创建了sqlite文件。迁移适用于sqlite。
然后我将touch storage/database.sqlite
默认数据库连接切换回mysql并恢复了config/database.php
文件。迁移适用于mysql。
我猜这没有意义。也许是服务器的东西。