2012-08-04 4 views
3

J'utilise cUrl avec Php (la dernière version stable d'Ubuntu) pour obtenir une page https distante, et curl_exec renvoie false après avoir atteint le timeout. Évidemment j'utilise les paramètres theese:PHP cUrl ssl timeout

curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, 0); 

En utilisant wireshark, il semble que le serveur ne répond pas après "Client Hello". Quelques faits étranges:

  1. Le même script écrit en Perl exécute par CLI dans la même machine
  2. Le code exactement la même exécution d'une ancienne machine fonctionne correctement

Conseils? Quelqu'un suggère de recompiler curl et openssl ... Je pourrais le faire sur la machine de développement, mais le serveur de production a le même problème, et pour la facilité de maintenance je voudrais garder seulement les paquets d'origine là ... Merci!

+1

Je sais que ce serait un bon moment facepalm, mais s'il vous plaît pouvez-vous vérifier une deuxième fois que le système d'URL que vous avez réellement avez mis 'https' et ne manquez pas de la' s'? Je peux voir ce comportement se produire si vous essayez d'initier une connexion SSL à un port TCP à la recherche de données en texte brut seulement ... Je pense qu'il est hautement improbable que ce soit un problème cURL. Vous pouvez également essayer de forcer une version particulière de SSL ('CURLOPT_SSLVERSION', commencez par forcer v3). Cela vaut la peine de tester si vous pouvez faire un simple GET HTTPS avec cURL, par exemple. 'https: // google.com /' – DaveRandom

+0

Oui, certainement pas un problème de boucle. Vérifiez également votre DNS. – Dark

+0

A travaillé en forçant SSLVERSION à 3. Merci DaveRandom! – rcason

Répondre

6

résolu avec:

curl_setopt($soap_do, CURLOPT_SSLVERSION, 3);

+0

Merci. Cette réponse était la clé de mon problème. –