1. 程式人生 > >PHP使用curl請求https站點的常見錯誤及解決方案

PHP使用curl請求https站點的常見錯誤及解決方案

使用curl請求http站點和https站點最大的不同就是https站點有證書驗證這一環節,如果證書驗證不通過則無法發起請求,不管是請求什麼型別的站點遇到問題時先把錯誤碼打印出來看一下,列印錯誤碼的程式碼片段如下:

$error = curl_errno($ch); //其中$ch為curl_init();返回的控制代碼
print_r($error);

證書無法驗證的錯誤碼是60,peer 證書無法被已知的CA 證書驗證,驗證需要本地證書支援,本地證書路徑有時在php.ini中沒有被設定或者設定錯誤就會出現這個問題,當然最好在不改變系統配置的情況下能使用程式碼解決那也是一種方案,這樣程式碼的移植性非常好。通過程式碼解決的方案有兩個:1.禁止驗證 2.設定本地證書。下面是程式碼片段:

//解決方案一 禁用證書驗證
	$params[CURLOPT_SSL_VERIFYPEER] = false;
	$params[CURLOPT_SSL_VERIFYHOST] = false;

	//解決方案二 設定證書
	curl_setopt($ch,CURLOPT_CAINFO,'證書路徑/證書檔案'); //證書路徑需要正確

證書檔案可以點此下載,也可以在https://curl.haxx.se/docs/caextract.html下載