[英]php curl -k or --insecure, -X
使用PHP和curl,我需要通過代理連接到SSL安全站點,並忽略證書警告。 我的curl命令行如下所示:
curl -k -u username:password -X GET https://someURL
通過curl.php,我看到我認為正確的選項設置。 有了它們,我最終會得到這樣的結論:
$ch = curl_init("https://someURL");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Ignore cert errors?
curl_setopt($ch, CURLOPT_PROXY, true); // Proxy true?
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
$result = curl_exec($ch);
但是,$ result總是返回false。 我的密碼中有一個特殊的字符,“!”。 也許我需要逃避它? 除此之外,還有其他想法嗎?
要完全禁用ssl證書檢查curl知道選項CURLOPT_SSL_VERIFYPEER
。 如果設置為false
certifcate,則將禁用檢查。 由於默認值為true
,您必須添加:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
從PHP文檔 :
CURLOPT_SSL_VERIFYPEER FALSE阻止cURL驗證對等方的證書。 可以使用CURLOPT_CAINFO選項指定要驗證的備用證書,也可以使用CURLOPT_CAPATH選項指定證書目錄。 默認情況下,從cURL 7.10開始為TRUE。 從cURL 7.10開始安裝的默認包。
請注意,如果禁用證書檢查,則可以省略CURLOPT_SSL_VERIFYHOST
設置。 因此可以刪除以下行:
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
您還詢問以下設置是否正常:
curl_setopt($ch, CURLOPT_PROXY, true);
從PHP文檔 :
通過隧道請求的HTTP代理。
表示如果您使用代理,它接受代理地址,如'192.168.0.1:3128'。 在這種情況下, true
無意義
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.