2017-11-15 36 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

あなたは2番目に 'value'を含めていません。あなたはあなたが得ている応答を指定する必要があります。 – Evert

+0

私は( '$ fields = array(" quota "=>" 11GB ")' '))、ちょっと誤解しています。最初の例では5GB、2番目の例では11GBを使用しています – Johannes

答えて

0

curlコマンドとの差貼り付けたPHPコードはpoorly designed user provisioning APIにあります。これらのcURLの引数使用

$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