You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9 Socialite谷歌登录报错:cURL error 6线程启动失败

解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:02:05