Laravel guzzle cURL错误6:无法解析host: http(参见http://curl.haxx.se/


Laravel guzzle cURL error 6: Could not resolve host: http (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

在我的开发中,我的代码工作正常。当我把它推送到服务器时,它变成了错误。

cURL error 6: Could not resolve host: http (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

下面是我的代码:
use GuzzleHttp'Client;
try {
    $client = new Client();
    $client->request('POST', env('API_DOMAIN') . '/v1/user/auth/verified_email',
        ['headers' => ['Authorization' => 'cm9vcGlhLnVzZXIud2ViOkY0RVN3VXJheS1qVVB1a18='],
         'query'   => ['token' => $key]]);
    return redirect('/')->with('status', 'Your email has been verified. Thanks!')->with('statusType', 'success');
} catch (ConnectException $e) {
    Log::error($e);
    return redirect('/');
}

解决方案吗?

谢谢

我的解决方案是清除《工匠》中所有类型的缓存。

同时运行以下命令:

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

我花了一天的时间发现,最佳实践实际上是用以下方式捕获异常:

catch('Exception $ex)

那就完全不同了!所以不要使用:

catch(Exception $ex)

可以将此catch放在捕获所有其他特定异常的末尾。

您的API_DOMAIN可能没有设置为正确的url(是否以http://或https://)?开头)

重新启动web服务器(例如重启nginx)也是值得尝试的。

也可能是服务器的连接问题。您可以尝试重新启动VPS或检查防火墙是否没有阻止您的传出请求。也许暂时禁用iptables或防火墙。

API_DOMAIN的DNS也可能有问题。也许您确实在开发环境的/etc/hosts中进行了本地配置,但没有在生产环境中进行配置。您可以检查dns解析是否正确,或者将其添加到生产服务器上的/etc/hosts文件中。

这个回答帮助了我。原来是OSX上的curl版本之间存在差异。每个都有一个版本的openssl正在使用。噩梦般的发现,但一个直接的解决方案。见https://stackoverflow.com/a/54908305/2867894

我最近有这个问题,原来我是通过代理服务器进行隧道。我停止了通过代理路由,它工作得很好

清除laravel中的所有缓存

只是运行你的web服务器,我有同样的错误,但我的服务器是关闭的,然后我把它打开,它为我工作