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')); –