Curl 错误:操作被回调中止

Ant*_*ony 3 php curl php-curl

所以我显然已经用谷歌搜索了错误 - 但 PHP (PHP 7.4.4 (cli)) curl 给了我错误:

Curl error: operation aborted by callback使用以下代码:

private function curl_post($url,$post,$file = null,$file_type = 'audio/wav'){
    $ch = curl_init($url);

    if (!empty($file)){
        $post['SoundFile'] = new CURLFile(UPLOAD_PATH.$file,$file_type,$file);
    }

    // Assign POST data
    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $result = curl_exec($ch);

    if(curl_errno($ch)) echo 'Curl error: '.curl_error($ch);

    curl_close($ch);

    print'<pre>Curl (rec): '."\n";print_r($result);print'</pre>';
}
Run Code Online (Sandbox Code Playgroud)

我控制了两台(Ubuntu)服务器并重新启动了它们。我发布了相当大量的数据,但在谷歌搜索中这似乎并不是触发curl_error的原因。有谁知道是什么原因造成的?它was工作得很好,然后就停止了。

另外,file_put_contents(time().'.txt','log');在我的接收服务器中作为中断确实会记录响应。所以它显然落在了正确的区域。

另外,我要说的是,两台服务器通过curl 彼此进行多次对话(因此一台服务器卷曲到另一台服务器,然后返回一点)。此外 - 错误 42 是 CURL 响应,但https://curl.haxx.se/libcurl/c/libcurl-errors.html似乎没有提供太多帮助。我尝试过跟踪彼此之间的各种调用,但看不出它为什么会中断 - 它在发布/调用发生之前就出现错误/中断。

Ant*_*ony 9

所以我找到了答案,我希望这对处于这种情况的其他人有所帮助。原因是因为该文件在服务器上丢失CURLFile(以前就在那里)。我的代码现在是这样的:

    if (!empty($file) && is_file(UPLOAD_PATH.$file)){
        $post['SoundFile'] = new CURLFile(UPLOAD_PATH.$file,$file_type,$file);
    }
Run Code Online (Sandbox Code Playgroud)

这不再产生错误。关键是它甚至在提交帖子之前就出错了,但错误本身并没有多大帮助,直到我在单独的测试脚本中将其分解并将文件元素添加回来。