在put请求时出现带有CURLOPT_POSTFIELDS的Php Curl问题

在put请求时出现带有CURLOPT_POSTFIELDS的Php Curl问题,php,curl,Php,Curl,使用php 5.5.13和curl 7.36.0测试我的应用程序时,我成功地完成了以下请求: public static function httpPut($url) { $query = self::concatUrl($_POST); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_

使用php 5.5.13和curl 7.36.0测试我的应用程序时,我成功地完成了以下请求:

public static function httpPut($url)
{
    $query = self::concatUrl($_POST);

    $ch = curl_init();

    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . self::getCookiesPath());
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . self::getCookiesPath());
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 400);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("ipAddress: " . $_SERVER['REMOTE_ADDR']));

    $output = curl_exec($ch);

    if(curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200 && curl_getinfo($ch, CURLINFO_HTTP_CODE) != 201)
    {
        throw new Exception($output, curl_getinfo($ch, CURLINFO_HTTP_CODE));
    }

    curl_close($ch);

    return json_decode($output);
}
但在服务器上,使用php 5.3.3和curl 7.21.0,我遇到了以下问题:

curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
它只是在请求时不发送任何数据。 要获得成功,我需要使用$url连接$query:

curl_setopt($ch,CURLOPT_URL, $url . " ? " . $query);
你知道怎么解决吗?

通过这样做

curl_setopt($ch,CURLOPT_URL, $url . " ? " . $query);
您只是发出GET请求,而不是POST请求

我不确定self::concatul正在做什么,但您确定它为POST请求创建了有效的键值对吗

那么您还没有指定数据的长度

请看一下这个答案:

尝试添加内容长度标题:
curl\u setopt($ch,CURLOPT\u HTTPHEADER,array(“内容长度:“.strlen($query)”,“ipAddress:”.$\u SERVER['REMOTE\u ADDR'))