Я использовал ваш код, поэтому определил URL-адрес и заполнил данные строкой, и все работало, как ожидалось. Я был отклонен сайтом, так как не было ни одного получателя, который мог бы справиться с путом. Чтобы получить информацию легко просто добавьте строку
curl_setopt($ch, CURLOPT_VERBOSE, true);
и вы получите что-то вроде:
* About to connect() to yyyy.xxxx.com port 80 (#0)
* Trying 62.221.196.28...
* connected
* Connected to yyyy.xxxx.com (zz.221.196.28) port 80 (#0)
> PUT / HTTP/1.1
User-Agent: SimpleAgent-1.0
Host: yyyy.xxxx.com
Accept: */*
Content-Length: 14
Expect: 100-continue
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 405 Method Not Allowed
< Date: Thu, 09 Feb 2012 19:46:28 GMT
< Server: Apache
< Allow: GET,HEAD,POST,OPTIONS
< Vary: Accept-Encoding
< Content-Length: 231
< Content-Type: text/html; charset=iso-8859-1
<
* Connection #0 to host yyy.xxxx.com left intact
* Closing connection #0
Как видно из журнала, запрос вышел, однако, когда вы хотите поместить данные, настройка apache не позволяет вам помещать данные в этот URL. Таким образом, в зависимости от сервера вам придется позаботиться о получении URL-адреса, который принимает PUT.