Home  >  Article  >  Backend Development  >  How to solve the problem of curl returning false in php? (example explanation)

How to solve the problem of curl returning false in php? (example explanation)

不言
不言forward
2019-01-03 10:06:393254browse

This article introduces the solutions to the problems I encountered when using curl. Hope it helps everyone.

First let’s look at an encapsulated curl function

function request_post($url = '', $param = '') {
    if (empty($url) || empty($param)) {
        return false;
    }
    $postUrl = $url;
    $curlPost = $param;
    $curl = curl_init();//初始化curl
    curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页
    curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
    curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
    curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);//提交的参数
    $data = curl_exec($curl);//运行curl
    curl_close($curl);
    
    return $data;
}

When called, the return result is bool(false)
We are in the curl_exec function The error obtained earlier through curl_error($curl) is also string(0) "" empty string.

Finally I found that the interface address of the API I called was ssl protocol, and then just add the following two

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

Ifcurl If the requested address contains spaces, false will also be returned. Pay special attention to this.

I have also encountered one before that returns falseprintcurl_error( $curl)What I get is the following error

string(39) "Problem (2) in the Chunked-Encoded data" bool(false)

The solution to this error is to set the HTTP protocol version used by curl, which is to add the following sentence

//CURL_HTTP_VERSION_1_0 (强制使用 HTTP/1.0)
//CURL_HTTP_VERSION_1_1 (强制使用 HTTP/1.1)。
curl_setopt($curlp, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

The above is the detailed content of How to solve the problem of curl returning false in php? (example explanation). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:cnblogs.com. If there is any infringement, please contact admin@php.cn delete