2009-09-06 6 views
0

Je terminais mon script et soudainement libcurl a cessé de fonctionner. Je pensais que le serveur auquel je me connectais était en panne ou quelque chose, mais invariablement de l'endroit où j'essaie de me connecter, je reçois la même erreur sucky. J'ai même essayé de redémarrer ma boîte, même résultat. L'extrait de code où les choses se passent est:Erreur bizarre de libcurl dans PHP (Échec de se connecter à IPHERE: Erreur inconnue 22)

public function navigate(array $data) 
    { 
     $ch = curl_init(); 

     // Setup cURL 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_INTERFACE, $data['ip']); 
     curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookies.jar"); 
     curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookies.jar"); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_USERAGENT, $data['agent']); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

     // Visit homepage 
     curl_setopt($ch, CURLOPT_URL, "SOMEWEBSITEHERE, MAKES NO DIFFERENCE"); 
$page=  curl_exec($ch); 
var_dump($page, curl_error($ch), curl_errno($ch)); 
    } 

Le var_dump ci-dessus() produira cette sortie (avec www.yahoo.com comme l'URL):

bool(false) 
string(51) "Failed to connect to 69.147.76.15: Unknown error 22" 
int(7) 
Login failed! 

J'ai même renifler essayé la connexion avec wireshark, cURL n'émet même pas de demande de connexion; seulement une requête DNS.

Je suis complètement désemparé.

J'apprécierais vraiment un coup de main avec ceci.

Merci.

+0

Le code fonctionne pour moi (page retournée, pas d'erreur), avec CULOPT_INTERFACE réglé sur le réseau local de la machine locale. Avez-vous vérifié la sortie de CURLOPT_VERBOSE et le retour de curl_getinfo()? (Je suppose que "Connexion échouée" provient du code qui n'est pas dans le message?) – GZipp

Répondre

1

Voici mon code complet (travail) (essentiellement le vôtre, mais avec plus de puissance), dans l'espoir qu'il contribuera à:

$url = 'www.yahoo.com'; 
$data['ip'] = $_SERVER['SERVER_ADDR']; 
$cookie_jar = sys_get_temp_dir() . 'cookiejar.txt'; 
$data['agent'] = 'Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8'; 

$fp = fopen('php://temp', 'r+'); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_INTERFACE, $data['ip']); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_USERAGENT, $data['agent']); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_STDERR, $fp); 
$page = curl_exec($ch); 
$errno = curl_errno($ch); 
$errmsg = curl_error($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 
rewind($fp); 
$verbose = fread($fp, 8192); 
fclose($fp); 

echo '<pre>'; 
echo 'Error number: ' . $errno . '<br />'; 
echo 'Error message: ' . $errmsg . '<br />'; 
echo '------------------' . '<br />'; 
print_r($info); 
echo '------------------' . '<br />'; 
echo $verbose . '<br />'; 
echo '------------------' . '<br />'; 
echo htmlspecialchars($page); 
echo '</pre>'; 
Questions connexes