Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 将curl请求转换为php curl-收到不同的响应_Apache_Curl_Php Curl - Fatal编程技术网

Apache 将curl请求转换为php curl-收到不同的响应

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

我请求在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';
$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上,你终于向我解释了它是如何工作的。非常感谢你的支持