2017-11-15 16 views
0

API를 통해 기존 Nextcloud 사용자를 업데이트하려고했습니다. 내가 쉘을 통해 직접 작업을 수행 할 때이cURL PUT Request with Nextcloud/owncloud API

curl -u user:pass -X PUT "https://example.org/ocs/v1.php/cloud/users/admin" -H "OCS-APIRequest: true" -d key="quota" -d value="5GB" 

작동하지만 그것은 항상 반환 다음 코드를 사용하여 PHP를 통해 그것을 할 때 "오류 997"

$url = 'https://' . $ownAdminname . ':' . $ownAdminpassword . '@example.org/ocs/v1.php/cloud/users/admin'; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$fields = array("quota" => "5GB"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields)); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'OCS-APIRequest: true' 
    )); 
$response = curl_exec($ch); 
curl_close($ch); 
echo "Response: ".$response; 
+0

두 번째 숫자에는 'value'가 포함되지 않습니다. 어떤 응답을 받고 있는지 지정해야합니다. – Evert

+0

저는 ($ fields = array ("quota"=> "11GB")'')), 약간의 오해의 소지가 있습니다. 첫 번째 예제에서는 5GB를 사용하고 두 번째 예제에서는 11GB를 사용합니다. – Johannes

답변

0

cURL을 명령 사이의 차이 붙여 넣은 PHP 코드는 poorly designed user provisioning API에 있습니다.

사용이 컬을 인수 : 오히려

$fields = array("quota" => "5GB"); 

:하지만 ...

-d key="quota" -d value="5GB" 

은 ... 필드 당신이 게시하고 일치하지 않는

$fields = array(
    'key' => 'quota', 
    'value' => '5GB', 
); 

코드 997에 대한 설명은 https://github.com/owncloud/core/blob/v10.0.3/apps/provisioning_api/lib/Users.php#L269-L272에서 찾을 수 있습니다. 'key "의 데이터가 제출되었으므로 ($parameters['_put']['key']null) 오류가 발생합니다.

+0

이 작동합니다! 고마워요! – Johannes