我创建了一个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
做到这一点?我在官方文档中搜索,无法找到如何使用代理。
我会尝试盲目地将这些构造传递给其中一个连接构建器类,希望有人选择这个
'restOptions' => [
'proxy', 'xxx.xxx.xxx.xxx'
]
另一方面,如果你有一个跟踪日志,你可以看到是否使用了Guzzle或其他东西。考虑在以下位置打开问题跟踪:https://github.com/GoogleCloudPlatform/google-cloud-php/issues
Bigquery使用www.googleapis.com作为其endpoint。命令行说明使用global flags指定有关代理使用的地址,密码,端口和用户名,但是,对于客户端库,您需要验证与基础结构团队的访问权限。
在使用BigQueryClient之前,使用php的putenv()设置代理。
putenv('HTTPS_PROXY=192.168.1.1:8080');