【问题标题】:PHP's curl not posting data to the serverPHP的curl没有将数据发布到服务器
【发布时间】:2012-08-27 08:10:16
【问题描述】:

我刚刚编写了一个使用 curl 的小应用程序,并且正在运行。今天试了一下,还是不行。

我使用 curl 将数据发布到位于外部服务器上的另一个页面。 Get 有效,但帖子无效。

更新 1:

我已将错误范围缩小到有一个名为“SOME_KEY”的条目并且在帖子数组中具有值“'@C:/wamp/www/name.pdf'”会导致此问题。

@符号怎么会引起问题!!!我正在尝试将文件上传到服务器

已解决

检查下面的答案。

原始条目

我目前的卷曲选项

    $curl_options = array(
        CURLOPT_RETURNTRANSFER => true,                 // Return web page      
        CURLOPT_HEADER         => false,                // Don't return headers
        CURLOPT_FOLLOWLOCATION => false,                // Follow redirects
        CURLOPT_ENCODING       => "",                   // Handle all encodings
        CURLOPT_AUTOREFERER    => false,                // Set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,                  // Timeout on connect
        CURLOPT_TIMEOUT        => 120,                  // Timeout on response
        CURLOPT_MAXREDIRS      => 0,                    // Stop after 10 redirects
        CURLOPT_USERAGENT      => "regify connector",   // Who am I? FIREFOX, IE, OPERA, CHROME, SPIDER, SEARCH BOT...etc.
    );

发布数据的函数:

function makePostRequest($url, $fields  ){

        //Create the options
        //global $curl_options;
        $curl_options[CURLOPT_URL       ] = $url;
        $curl_options[CURLOPT_POST      ] = count($fields);
        $curl_options[CURLOPT_POSTFIELDS] = $fields;

        $ch = curl_init();
        curl_setopt_array($ch, $curl_options);

        $content = curl_exec ($ch);
        $err     = curl_errno($ch);

        curl_close($ch);    
        return ($err == 0)?$content:false;
    }

PHP 的 getallheader 正在返回

array
  'Host' => string 'localhost' (length=9)
  'Accept' => string '*/*' (length=3)
  'Content-Length' => string '16632433' (length=8)
  'Expect' => string '100-continue' (length=12)
  'Content-Type' => string 'multipart/form-data; boundary=----------------------------93ac4fed717b' (length=70)

CURL 的 curl_getinfo 函数正在返回:

    array
  'url' => string 'http://localhost/archieve/index.php' (length=35)
  'content_type' => string 'application/json' (length=16)
  'http_code' => int 200
  'header_size' => int 281
  'request_size' => int 263
  'filetime' => int -1
  'ssl_verify_result' => int 0
  'redirect_count' => int 0
  'total_time' => float 0.125
  'namelookup_time' => float 0
  'connect_time' => float 0
  'pretransfer_time' => float 0
  'size_upload' => float 16632433
  'size_download' => float 18
  'speed_download' => float 144
  'speed_upload' => float 133059464
  'download_content_length' => float 18
  'upload_content_length' => float 16632433
  'starttransfer_time' => float 0.015
  'redirect_time' => float 0
  'certinfo' => 
    array
      empty

这个问题可能是由内容类型引起的吗?我在 stackoverflow 上读到它建议 CURL 足够聪明,可以自己设置这个值。

【问题讨论】:

    标签: php curl


    【解决方案1】:

    我想通了。代码曾经并且仍在按应有的方式工作。 Curl 无法发布 PDF 文件,我相信是因为权限,因此它根本没有发布。

    【讨论】:

    • curl_errno($ch);返回 0。问题是除了没有提交 POST 数据外,一切都照常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多