Используйте клиентский класс HTTP для помощи в отправке запросов. Есть несколько доступных, но я создал один (https://github.com/broshizzledizzle/Http-Client), с которым я могу вам помочь.
Создание запроса PUT:
<?php
require_once 'Http/Client.php';
require_once 'Http/Method.php';
require_once 'Http/PUT.php';
require_once 'Http/Request.php';
require_once 'Http/Response.php';
require_once 'Http/Uri.php';
use Http\Request;
use Http\Response;
header('Content-type:text/plain');
$client = new Http\Client();
//GET request
echo $client->send(
Request::create()
->setMethod(new Http\PUT())
->setUri(new Http\Uri('http://localhost/linetime/user/1'))
->setParameter('a', 'hello')
)->getBody();
?>
Обработка запроса PUT:
//simply print out what was sent:
switch($_SERVER['REQUEST_METHOD']) {
case 'PUT':
echo file_get_contents('php://input');
break;
}
Обратите внимание, что у меня есть автозагрузчик в моих проектах, который будет загружать все эти включения для меня, но вы можете подумать о создании файла, который будет включать все, если вы не хотите идти по этому пути.
Библиотека-менее:
//initialization code goes here
$requestBody = http_build_query(
array('a'=> 'hello'),
'',
'&'
);
$fh = fopen('php://memory', 'rw');
fwrite($fh, $requestBody);
rewind($fh);
curl_setopt($this->curl, CURLOPT_INFILE, $fh);
curl_setopt($this->curl, CURLOPT_INFILESIZE, strlen($requestBody));
curl_setopt($this->curl, CURLOPT_PUT, true);
//send request here
fclose($fh);
Обратите внимание, что вы используете поток для отправки данных.