症狀:php curl調用https出錯
排查方法:在命令行中使用curl調用試試。
原因:服務器所在機房無法驗證SSL證書。
解決辦法:跳過SSL證書檢查。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
症狀:php curl調用curl_exec返回bool(false),命令行curl調用正常。
排查方法:
var_dump(curl_error($ch));
返回:
string(23) "Empty reply from server"
再排查:
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
返回:
HTTP/1.1 100 Continue
Connection: close
原因:php curl接收到HTTP 100就結束了,應該繼續接收HTTP 200
解決方案:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
參考資料:
http://the-stickman.com/web-development/php-and-curl-disabling-100-continue-header/