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

本地XAMPP环境下用PHP访问Google BigQuery遇连接拒绝问题求助

解决BigQuery PHP客户端连接拒绝问题(cURL error 7)

问题场景

在XAMPP部署的PHP代码中,使用Google Cloud BigQuery Client访问BigQuery数据,已配置服务账号密钥,但运行时抛出错误:

Fatal error: Uncaught Google\Cloud\Core\Exception\ServiceException: cURL error 7: Failed to connect to bigquery.googleapis.com port 443: Connection refused

对应的PHP代码如下:

<?php

require 'vendor/autoload.php';

use Google\Cloud\BigQuery\BigQueryClient;

putenv('GOOGLE_APPLICATION_CREDENTIALS=D:\\xampp\\htdocs\\weather839\\test_key.json'); 

$credentialsTest = getenv('GOOGLE_APPLICATION_CREDENTIALS');
echo 'Credentials Path: ' . $credentialsTest;

$credentialsPath= 'test_key.json';
$projectId = 'hardy-tine-285605';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
    'keyFile' => json_decode(file_get_contents($credentialsPath), true),
    // 'location'=>'asia-southeast1'
]);

$query = 'SELECT * FROM hardy-tine-285605.test.station_list Limit 1000;';
$queryJobConfig = $bigQuery->query($query);
$queryJob = $bigQuery->startQuery($queryJobConfig);


$queryJob->waitUntilComplete();
$queryResults = $queryJob->queryResults();
$data = [];
foreach ($queryResults as $row) {
    $data[] = $row;
}

header('Content-Type: application/json');
echo json_encode($data);

?>

排查与解决步骤

  • 检查网络连接与代理设置
    cURL error 7本质是无法建立HTTPS连接,先确认XAMPP所在服务器能正常访问bigquery.googleapis.com:

    1. 在服务器终端/命令行执行curl -v https://bigquery.googleapis.com,查看是否能返回正常响应
    2. 如果服务器处于内网或需要代理,给PHP的cURL配置代理:
      在代码开头添加:
      $opts = [
          'http' => [
              'proxy' => 'http://你的代理地址:端口',
              'request_fulluri' => true
          ],
          'https' => [
              'proxy' => 'http://你的代理地址:端口',
              'request_fulluri' => true
          ]
      ];
      stream_context_set_default($opts);
      
      或者修改php.ini中的curl.proxy_host和curl.proxy_port参数,重启XAMPP生效。
  • 验证防火墙与安全组规则

    1. 检查服务器本地防火墙(如Windows防火墙、iptables)是否放行443端口出站请求
    2. 如果是云服务器,检查云平台安全组是否允许出站访问bigquery.googleapis.com的443端口
  • 修正BigQuery查询语法
    查询语句中项目ID和数据集名称包含短横线,需用反引号包裹,避免语法错误:

    $query = 'SELECT * FROM `hardy-tine-285605.test.station_list` LIMIT 1000;';
    
  • 确认服务账号密钥有效性

    1. 检查test_key.json文件路径是否正确(代码用了相对路径,确保文件在XAMPP的htdocs/weather839目录下)
    2. 登录Google Cloud控制台,确认该服务账号已被授予BigQuery Data Viewer和BigQuery Job User权限
  • 更新Google Cloud PHP客户端库
    旧版本客户端库可能存在兼容性问题,执行Composer命令更新:

    composer update google/cloud-bigquery
    

内容的提问来源于stack exchange,提问作者JK2046

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:42:46