Usando o método PUT com a biblioteca PHP cUrl

Consigo executar o seguinte comando curl (na linha de comando) com êxito:

curl -XPOST --basic -u user:password -H accept:application/json -H Content-type:application/json --data-binary '{ "@queryid" : 1234 }' http://localhost/rest/run?10

Aqui está o que estou fazendo até agora, no entanto, parece não estar funcionando com o serviço REST que estou usando:

$headers = array(
    'Accept: application/json',
    'Content-Type: application/json',
);

$url = 'http://localhost/rest/run?10';
$query = '{ "@queryid" : 1234 }';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "user:password");

curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
curl_setopt($ch, CURLOPT_POSTFIELDSIZE, strlen($query));

$output = curl_exec($ch);

echo $output;

Qual é a maneira correta ao tentar converter --data-binário usando um método PUT?

questionAnswers(3)

yourAnswerToTheQuestion