[英]What is the curl_setopt equivalent of exec('curl -k …')
我正在嘗試復制此命令的功能:
exec('curl -k -d "pameters=here" https://apiurlhere.com', $output);
與curl_exec():
$url = 'https://apiurlhere.com?parameters=here';
$ci = curl_init();
curl_setopt($ci, CURLOPT_POST, TRUE);
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ci, CURLOPT_URL, $url);
$response = curl_exec($ci);
curl_close ($ci);
print_r($response);
我一直在嘗試在文檔(http://php.net/manual/zh/function.curl-setopt.php)中找到的其他選項,並認為它是CURLOPT_SSL_VERIFYPEER,但仍然失敗(響應返回為空)。
我張貼到的URL使用SNI,當SSL證書返回的主機名與預期不同時,這會導致cURL失敗。
是否有一個等同於-k的curl_setopt?
嘗試:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE)
與命令行上的-k
等效(您不應該真正使用它,因為它會使連接容易受到MITM攻擊)。
您的問題是,假設-d "pameters=here"
等同於將這些參數放入URL查詢中,例如https://apiurlhere.com?parameters=here
。
並非如此,請參見-d
文檔:
(HTTP)將POST請求中的指定數據發送到HTTP服務器,就像用戶填寫HTML表單並按Submit按鈕時瀏覽器所做的一樣。 這將導致curl使用內容類型application / x-www-form-urlencoded將數據傳遞到服務器。
您可能應該為此使用POSTFIELDS
:
curl_setopt($ch, CURLOPT_POSTFIELDS, array("parameters" => "here"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.