我正在嘗試在PHP中向URL發出cURL請求。無論我嘗試什麼,我總是得到一個cURL errno 35(針對特定的URI)。捲曲文檔有以下說:如何調試或修復cURL errno 35
你真的想錯誤緩衝區,並在那裏讀取消息,因爲它稍微查明問題。可能是證書(文件格式,路徑,權限),密碼等。
但是,當試圖捕獲這些信息似乎沒有任何回報。
$client = curl_init('https://dev.kelunik.com/css/all.min.css')
$log = fopen('/srv/www/Requestable/data/curl-log.txt', 'a+');
curl_setopt($client, CURLOPT_VERBOSE, 1);
curl_setopt($client, CURLOPT_STDERR, $log);
curl_setopt($client, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($client, CURLOPT_SSL_VERIFYHOST, 2)
curl_setopt($client, CURLOPT_CAINFO, __DIR__ . '/../../../../data/default.pem');
curl_setopt($client, CURLOPT_FAILONERROR, false);
curl_setopt($client, CURLOPT_RETURNTRANSFER, true);
curl_setopt($client, CURLOPT_HEADER, true);
curl_setopt($client, CURLINFO_HEADER_OUT, true);
curl_setopt($client, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($client, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($client, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
if (!$response = curl_exec($client)) {
throw new CurlException('Making request failed: ' . curl_error($client) . '(' . curl_errno($client) . ')');
}
fclose($log);
上面的代碼始終引發的CurlException
,並將errno 35,然而所定義的日誌文件保持爲空。
嘗試a different URI(帶有來自同一CA的證書)時,它只是起作用。我還檢查我的根CA束這是相當up2date的:從Mozilla的
證書數據下載上:週三09月03日3時12分03秒2014
還有什麼可以我檢查,以找出在具體是導致錯誤?
備註:URI既可以從瀏覽器中,以及從我的本地開發環境蠻好的請求
注2:我也嘗試過它無需手動設置這就造成了一個自定義的CA根束同樣的錯誤。
OpenSSL的版本:
Installed Packages
Name : openssl
Arch : x86_64
Version : 1.0.1e
Release : 30.el6_6.5
捲曲版本:
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
錯誤35是「未知的ssl錯誤」。你沒有從'curl_error()'調用中得到任何更具體的消息? – 2015-02-09 21:04:23
我只得到超級有用的[「SSL連接錯誤」](https://requestable.pieterhordijk.com/4GCuvc)錯誤。 :( – PeeHaa 2015-02-09 21:09:45
你使用的是什麼版本的OpenSSL? – 2015-02-09 21:34:56