2017-03-15 62 views
1

我正在尝试为datadog api编写一个php curl,但它返回内部错误。这是在bash脚本中工作,但在转换为phpcurl时抛出错误。有人可以帮助我解决这个问题。php curl for datadog api

$data = [ 
    'tags' => '[env:prod]' 

]; 
    $headers = [ 
     'Accept: application/json', 
     'Content-Type: application/json' 
    ]; 
    $tagUrl="https://app.datadoghq.com/api/v1/tags/hosts/".$host."?api_key=".$api_key."&application_key=".$app_key; 

     $http_method='POST'; 
     $ch=curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $tagUrl); 
     curl_setopt($ch, CURLOPT_POST, true); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 
     curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); 
     $out=curl_exec($ch); 
+0

如果你得到'内部错误500',那么你的代码没有任何关系,除非你做错了什么,否则这是服务器端错误。请参考datadog。 – Ahmad

+0

其显示只是内部错误,而不是内部错误500. @Ahmad –

回答

3

您用来发送数据的格式不符合documentation并且您的呼叫未能完成。

如果更改调用将你的工作$data到:

$data = [ 'tags' => ['env:prod'] ]; 

一致认为,API返回的错误是不是真的有帮助,在Datadog提交的问题来纠正这种行为,并返回正确的错误代码而不是500(它实际上是一个500,你可以通过在执行curl会话后打印curl_getinfo($ch)来看到它)。

+0

我刚刚通过添加此行解决了问题。 $ data = array('tags'=> array('env:non-production')); –