Google Cloud - BigQuery - PHP使用代理

问题描述 投票:1回答:3

我创建了一个PHP脚本来从我的Google Cloud Platform帐户中检索一些数据。以下是我的做法:

<?php

    require __DIR__ . '/vendor/autoload.php';
    use Google\Cloud\BigQuery\BigQueryClient;

    putenv('GOOGLE_APPLICATION_CREDENTIALS=key.json');
    $projectId = 'xxxxx';
    $datasetId = 'xxxxxx';
    $table = 'xxxxx';

    $bigQuery = new BigQueryClient([
        'projectId' => $projectId
    ]);

    // etc...

在我的本地计算机(WAMP)上一切正常,但是当我将脚本迁移到公司的生产环境时,存在一个问题:

致命错误:未捕获的异常'Google \ Cloud \ Core \ Exception \ ServiceException',消息'cURL错误6:无法解析主机'www.googleapis.com'

事实上我除了这个消息之外,因为每次我使用Curl时,我都需要设置我们公司的代理信息:

<?php

curl_setopt($curl, CURLOPT_HTTPPROXYTUNNEL, true); 
curl_setopt($curl, CURLOPT_PROXY, 'xxx.xxx.xxx.xxx');

顺便说一句,我100%肯定googleapis.com被我们的代理人列入白名单......但是如何用BigQueryClient做到这一点?我在官方文档中搜索,无法找到如何使用代理。

php google-cloud-platform google-bigquery
3个回答
0
投票

我会尝试盲目地将这些构造传递给其中一个连接构建器类,希望有人选择这个

'restOptions' => [
            'proxy', 'xxx.xxx.xxx.xxx'
    ]

另一方面,如果你有一个跟踪日志,你可以看到是否使用了Guzzle或其他东西。考虑在以下位置打开问题跟踪:https://github.com/GoogleCloudPlatform/google-cloud-php/issues


0
投票

Bigquery使用www.googleapis.com作为其endpoint。命令行说明使用global flags指定有关代理使用的地址,密码,端口和用户名,但是,对于客户端库,您需要验证与基础结构团队的访问权限。


0
投票

在使用BigQueryClient之前,使用php的putenv()设置代理。

putenv('HTTPS_PROXY=192.168.1.1:8080');
© www.soinside.com 2019 - 2024. All rights reserved.