Laravel 9 Socialite谷歌登录报错:cURL error 6线程启动失败
这个错误cURL error 6: getaddrinfo() thread failed to start属于线上环境的网络/配置问题,本地运行正常说明代码逻辑无错,按以下步骤排查修复:
检查服务器DNS配置
登录线上服务器,编辑/etc/resolv.conf,将DNS服务器替换为公共可用的(比如8.8.8.8或1.1.1.1),保存后测试能否解析谷歌域名:nslookup www.googleapis.com解析成功后,重启web服务(如Nginx/Apache)再测试登录。
禁用cURL线程信号
Laravel Socialite依赖Guzzle发送请求,可通过配置Guzzle禁用cURL的线程信号来解决线程启动失败问题。修改handleGoogleCallback方法:public function handleGoogleCallback() { try { // 自定义Guzzle客户端配置 $client = new \GuzzleHttp\Client([ 'curl' => [ CURLOPT_NOSIGNAL => 1, ], ]); $user = Socialite::driver('google')->setHttpClient($client)->user(); // 原业务逻辑保持不变 if (explode("@", $user->email)[1] != 'global-mobility-service.com'){ return redirect()->route('backpack.auth.login')->with('error','Email Not Allow'); } $finduser = User::where('email', '=', $user->email)->first(); if(isset($finduser) == true){ $updateUser = User::where('email', '=', $user->email)->update([ 'email' => $user->email, 'google_id'=>$user->id, ]); Auth::login($finduser); return redirect()->intended('admin/dashboard'); }else{ $newUser = User::create([ 'name' => $user->name, 'email' => $user->email, 'google_id'=>$user->id, 'password' => encrypt('123456') ]); $newUser->assignRole(2); Auth::login($newUser); return redirect()->intended('admin/dashboard'); } } catch (Exception $e) { dd($e->getMessage()); } }验证cURL线程支持
在服务器执行curl --version,查看输出是否包含Threaded SSL字样。如果没有,说明当前cURL版本未启用线程支持,需更新cURL或重新编译时添加线程支持(可联系服务器运维处理)。检查网络连通性
测试服务器能否访问谷歌API地址:telnet www.googleapis.com 443如果连接失败,检查服务器防火墙、安全组是否放行443端口,或是否有代理/网关限制对外请求。
确认PHP CA证书配置
检查php.ini中的curl.cainfo是否指向有效CA证书文件(比如/etc/ssl/certs/ca-certificates.crt),避免SSL证书验证问题间接引发该错误。
内容的提问来源于stack exchange,提问作者devit chea
相关产品推荐
相关产品推荐

