ホームページ >バックエンド開発 >PHPチュートリアル >PHPでcurlがfalseを返す問題を解決するにはどうすればよいですか? (説明例)
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; }呼び出されたときの戻り結果は、
bool(false)です。ここでは、
curl_exec#を実行します。 ## 関数 curl_error($curl)
を通じて以前に取得したエラーも string(0) ""
空の文字列です。 最終的に、呼び出した API のインターフェイス アドレスが
プロトコルであることがわかり、次の 2 つの <pre class="brush:php;toolbar:false;">curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);</pre>
If
を追加するだけです。要求されたアドレスにスペースが含まれている場合は、false
も返されます。これには特に注意してください。 以前にも、
print を返すものに遭遇したことがあります。 curl_error( $curl)
次のエラーが表示されます<pre class="brush:php;toolbar:false;">string(39) "Problem (2) in the Chunked-Encoded data" bool(false)</pre>
このエラーの解決策は、curl で使用される HTTP プロトコルのバージョンを設定することです。つまり、次の文を追加します
//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);
以上がPHPでcurlがfalseを返す問題を解決するにはどうすればよいですか? (説明例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。