J'essaie de récupérer les données d'un site (j'ai censuré l'URL) avec ce code:
<?php
$url = [doesnt really matter];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$archivo_xml = fopen("test.tst", "w");
curl_setopt($ch, CURLOPT_FILE,$archivo_xml);
curl_exec($ch);
$as1 = curl_getinfo($ch, CURLINFO_NAMELOOKUP_TIME);
$as2 = curl_getinfo($ch, CURLINFO_CONNECT_TIME);
$as3 = curl_getinfo($ch, CURLINFO_PRETRANSFER_TIME);
$as4 = curl_getinfo($ch, CURLINFO_STARTTRANSFER_TIME);
$as5 = curl_getinfo($ch, CURLINFO_TOTAL_TIME);
echo "Lookup: ",$as1," \n\r Connect: ",$as2," \n\r Pretransfer: ",$as3," \n\r Starttransfer: ",$as4," \n\r Total: ",$as5,"\n\r","Error: ", curl_error($ch), "\n\r";
curl_close($ch);
fclose($archivo_xml);
?>
Cela fonctionne bien sur local mais pas sur le serveur. Voici la sortie du local:
Lookup: 0.015155
Connect: 0.0281
Pretransfer: 0.129087
Starttransfer: 0.786341
Total: 0.786384
Error:
et voici la sortie du serveur:
Lookup: 0.028731
Connect: 0.043182
Pretransfer: 0
Starttransfer: 0
Total: 60.057787
Error: Unknown SSL protocol error in connection to [censored url]
Avec toute autre URL fonctionne très bien, le problème est avec celui-ci spécifique.
localhost PHP version: 5.4.23
serveur PHP version: 5.5.7
Merci d'avance
R&EACUTE;SOLU. À cause de ce bogue connu http://sourceforge.net/p/curl/bugs/1319/ j'ai rétrogradé curl à 7.33 et cela a fonctionné.
Essayez de définircURL
param
curl_setopt($ch, CURLOPT_SSLVERSION,3); // Apparently 2 or 3
Comme dans le cas de ce message, ajouter curl_setopt($ch, CURLOPT_SSLVERSION,3);
n'a pas immédiatement résolu le problème aujourd'hui. SSL a été validé de nouveau et accepté.
J'ai eu une situation similaire avec la même erreur. En utilisant une constante comme celle-ci, ça a fonctionné:
curl_setopt( $handle, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_SSLv3' );
Lien recherché: https://github.com/guzzle/guzzle/issues/1364
Autres constantes: https://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html
Essayez avec les deux options
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Si cela ne fonctionne toujours pas, il se peut que l'URL soit bloquée sur votre serveur.