Apache 将curl请求转换为php curl-收到不同的响应
我请求在owncloud中使用用户配置API更新用户Apache 将curl请求转换为php curl-收到不同的响应,apache,curl,php-curl,Apache,Curl,Php Curl,我请求在owncloud中使用用户配置API更新用户 curl -X PUT https://example.com/ocs/v1.php/cloud/users/pinuccio -d 'key=email' -d 'value=jack@google.com' -H "OCS-APIRequest: true" -u 'admin:adminpwd' 我正在尝试将其转换为PHP CURL 到目前为止,我的结论是: $username = 'admin'; $passwo
curl -X PUT https://example.com/ocs/v1.php/cloud/users/pinuccio -d 'key=email' -d 'value=jack@google.com' -H "OCS-APIRequest: true" -u 'admin:adminpwd'
我正在尝试将其转换为PHP CURL
到目前为止,我的结论是:
$username = 'admin';
$password = 'adminpwd';
$postData = array(
'key' => 'email',
'value' => 'jack@google.com'
);
$ch = curl_init('https://thesmartred.com/cloud/ocs/v1.php/cloud/users/'.$userid);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_HEADER, "OCS-APIRequest: true");
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
但我得到了997的回复。如果我在shell上运行这个,我会得到一个405。为什么我会得到两个不同的答案?
有人可以帮忙吗?这里是命令行请求和php curl请求之间的几个区别 首先,您以错误的方式使用了
CURLOPT_头。里面说
CURLOPT_HEADER TRUE以在输出中包含头
因此,要以适当的方式添加标题,示例如下:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'OCS-APIRequest: true'
));
其次,将数组传递给post字段。对于数组,它执行一个多部分/表单数据
post。您需要以字符串形式传递数据,在这种情况下非常方便
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
非常感谢。在CURLOPT_POSTFIELDS上,你终于向我解释了它是如何工作的。非常感谢你的支持