【发布时间】:2015-10-20 16:16:45
【问题描述】:
首先要做的事:我被赋予在 Azure 上部署 Drupal 网站的任务。
我在本地使用运行 Apache 的 OS X,一切正常。将项目部署到 Azure 时,出现错误。经过一些调试后,我将错误隔离到这段代码的 sn-p 中:
private function getToken(){
$ch = curl_init($this->host . $this->clientId . "&client_secret=" . $this->clientSecret);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('accept: application/json',));
$response = json_decode(curl_exec($ch));
curl_close($ch);
$token = $response->access_token;
dvm($response, $name = NULL);
return $token;
}
dvm() 是 Drupal Devel 函数,但足以说明这有点像 print_r 用于 Drupal 的类固醇。
我遇到的问题是,无论出于何种原因,$result 会回来NULL。当我在本地机器和 Linux/Debian 机器上运行相同的代码时,一切都按预期工作(由于curl,我得到了一个对象)。
由此得出结论,Azure 不喜欢这段代码中的某些内容。问题是找出什么。有什么想法吗?
【问题讨论】:
-
请运行phpinfo并检查curl是否启用,测试$this->变量的值
-
卷曲已启用。
$this-> variables是什么意思?请原谅我的无知,但我不是 PHP 专家。 -
@LuckyChingi 表示您可以检查您在
curl_init中设置的变量是否不为空或不正确。 -
$this->variables都按预期设置。 Azure 是否有可能阻止对外部 API 的 curl 调用? -
Azure Web App 不会阻止 curl 调用,我们可以在 Azure 上使用以下代码进行测试:
$ch = curl_init("www.bing.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); print($output); curl_close($ch);。顺便看看你的Api服务器是否有白名单,可能会阻塞Azure Web App的HTTP请求。