Ker*_*nes 6 php curl command-line-interface
这是我正在使用的代码:
curl -k https://www.ashleydirect.com/graphics/ad_images/T908-6.jpg
Run Code Online (Sandbox Code Playgroud)
这可以正常工作(“ -k”标志是工作或超时所必需的)
然后,我在PHP中使用以下代码:
$ch = curl_init("https://www.ashleydirect.com/graphics/ad_images/T908-6.jpg");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)
而且它超时了-我尝试了很多变化,但是$result总是错误的。
这是我执行phpinfo()时的PHP cURL信息:
启用了cURL支持
cURL信息7. 38.0年
龄 3
功能
AsynchDNS否
调试否
GSS协商否
IDN 是
IPv6 是大
文件是
NTLM 是
SPNEGO 否
SSL 是
SSPI 否
krb4 否
libz 是
CharConv 否
协议 dict,文件,ftp,ftp,ftps,gopher, http,https,imap,imaps,pop3,pop3s,rtsp,smtp,smtps,telnet,tftp
主机 x86_64-unknown-linux-gnu
SSL版本 OpenSSL / 1.0.1e
ZLib版本1.2.3
任何想法将不胜感激。
更新
以下是来自的信息curl_getinfo($ch):
array (
'url' => 'https://www.ashleydirect.com/graphics/ad_images/T908-6.jpg',
'content_type' => NULL,
'http_code' => 0,
'header_size' => 0,
'request_size' => 0,
'filetime' => -1,
'ssl_verify_result' => 1,
'redirect_count' => 0,
'total_time' => 59.27538100000000298450686386786401271820068359375,
'namelookup_time' => 0.00975999999999999957867036215475309290923178195953369140625,
'connect_time' => 0.05170500000000000095923269327613525092601776123046875,
'pretransfer_time' => 0,
'size_upload' => 0,
'size_download' => 0,
'speed_download' => 0,
'speed_upload' => 0,
'download_content_length' => -1,
'upload_content_length' => -1,
'starttransfer_time' => 0,
'redirect_time' => 0,
'certinfo' =>
array (
),
'primary_ip' => '65.207.240.29',
'primary_port' => 443,
'local_ip' => '172.24.32.132',
'local_port' => 54461,
'redirect_url' => '',
)
Run Code Online (Sandbox Code Playgroud)
更新2
来自的回复curl_error:
Unknown SSL protocol error in connection to www.ashleydirect.com:443
Run Code Online (Sandbox Code Playgroud)
更新3-解决方案
感谢@Valery Viktorovsky,我想清楚地提出我想出的解决方案,他指出他们只接受TLS 1.0。
解决方案是添加以下内容:
// Set to TLS 1.0 (CURL_SSLVERSION_TLSv1_0)
curl_setopt($ch, CURLOPT_SSLVERSION, 4);
Run Code Online (Sandbox Code Playgroud)
你的php代码没问题。执行 acurl_getinfo($ch)和curl_error($ch)aftercurl_exec即可查看服务器返回的响应代码。
更新:我测试了 ashleydirect.com SSL 证书,它仅支持 TLS 1.0。因此请确保您的 php 版本支持 TLSv1.0。
| 归档时间: |
|
| 查看次数: |
3692 次 |
| 最近记录: |