Я хочу скачать изображение в PHP, используя curl.Но это не работает.Когда я запускаю код, это занимает около 1 минуты и уходит в тайм-аут с пустым загруженным файлом изображения.
кажется, что cURL не может разрешить передачу SSL.
Я пробовал много онлайнрешения.Но не любой решит мою проблему.Пожалуйста, помогите мне
Вот мой код: (Метод 1)
$http_img = 'https://www.adidas.ca/dis/dw/image/v2/aaqx_prd/on/demandware.static/Sites-adidas-CA-Site/Sites-adidas-products/en_CA/v1545380233904/zoom/DV2807_00_plp_laydown.jpg?sw=440&sfrm=jpg';
$dest_image = fopen('dest_image.jpg', 'wb');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $http_img);
curl_setopt($ch, CURLOPT_FILE, $dest_image);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CAINFO, 'C:/wamp/www/test/cacert.pem');
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_exec($ch);
Вот мой код: (Метод 2)
$http_img = 'https://www.adidas.ca/dis/dw/image/v2/aaqx_prd/on/demandware.static/Sites-adidas-CA-Site/Sites-adidas-products/en_CA/v1545380233904/zoom/DV2807_00_plp_laydown.jpg?sw=440&sfrm=jpg';
$dest_image = fopen('dest_image.jpg', 'wb');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $http_img);
curl_setopt($ch, CURLOPT_FILE, $dest_image);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_exec($ch);
Я где-то читал, что старыйcurl или OpenSSL не поддерживает TLS 1.2.Но это не в моем случае.Вот подробности версии PHP cURL:
array (size=9)
'version_number' => int 473856
'age' => int 4
'features' => int 2428829
'ssl_version_number' => int 0
'version' => string '7.59.0' (length=6)
'host' => string 'x86_64-pc-win32' (length=15)
'ssl_version' => string 'OpenSSL/1.1.0i' (length=14)
'libz_version' => string '1.2.11' (length=6)
'protocols' =>
array (size=21)
0 => string 'dict' (length=4)
1 => string 'file' (length=4)
2 => string 'ftp' (length=3)
3 => string 'ftps' (length=4)
4 => string 'gopher' (length=6)
5 => string 'http' (length=4)
6 => string 'https' (length=5)
7 => string 'imap' (length=4)
8 => string 'imaps' (length=5)
9 => string 'ldap' (length=4)
10 => string 'pop3' (length=4)
11 => string 'pop3s' (length=5)
12 => string 'rtsp' (length=4)
13 => string 'scp' (length=3)
14 => string 'sftp' (length=4)
15 => string 'smb' (length=3)
16 => string 'smbs' (length=4)
17 => string 'smtp' (length=4)
18 => string 'smtps' (length=5)
19 => string 'telnet' (length=6)
20 => string 'tftp' (length=4)
Вы также можете предложить решение, отличное от cURL, для загрузки образа SSL
[EDIT]
Журнал ошибок для (Способ 2)
* Trying 104.117.73.200...
* TCP_NODELAY set
* Connected to www.adidas.ca (104.117.73.200) port 443 (#0)
* ALPN, offering http/1.1
* ignoring certificate verify locations due to disabled peer verification
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
* subject: C=DE; ST=Bavaria; L=Herzogenaurach; O=adidas AG; OU=Global IT; CN=www.global.adidas.com
* start date: Jul 19 00:00:00 2018 GMT
* expire date: Oct 18 12:00:00 2019 GMT
* issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=GeoTrust RSA CA 2018
* SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
> GET /dis/dw/image/v2/aaqx_prd/on/demandware.static/Sites-adidas-CA-Site/Sites-adidas-products/en_CA/v1545380233904/zoom/DV2807_00_plp_laydown.jpg?sw=440&sfrm=jpg HTTP/1.1
Host: www.adidas.ca
Accept: */*
* OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
* stopped the pause stream!
* Closing connection 0