2010-09-26 5 views
0

J'ai une simple fonction PHP sur un serveur ami que j'ai vérifié et qui a PHP CURL activé.CURL ne peut pas se connecter? Juste se bloque et ne répond pas. PHP a-t-il activé

La fonction est:

function sw_fetch_code($apikey='',$email=''){ 

$url = "http://www.domain.com/xxx/api.php?getcode=1&apikey=".$apikey."&email=".$email.""; 


     $ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
$result = curl_exec($ch); 

curl_close($ch); 

$obj = json_decode($result); 

if(!empty($obj)){ 
    if($obj->status == 200){ 

    return $obj->code; 

    }else{ 
    return $obj->status; 
    } 
} 

} 

Comme vous pouvez le voir est très simple et je l'ai testé et fonctionne sur localhost et interne à mon propre serveur. L'URL retourne comme prévu. Cependant, il ne donne aucune réponse lorsque cette fonction est appelée sur mon serveur d'amis.

Des idées qui pourraient causer cela?

Répondre

0

D'abord: vérifiez à partir du serveur "ami" si l'URL fonctionne, car vous n'avez pas de paramètres POST, vous pouvez vérifier avec la requête exacte et obtenir les résultats attendus. Voyez si vous pouvez obtenir les résultats sur le navigateur sur le serveur ami. Si vous n'avez pas d'interface graphique, essayez wget sur la ligne de commande. Voyez si vous obtenez des résultats. Si vous allez à l'étape suivante, si vous ne cURL n'est pas le problème. "serveur ami" n'est pas en mesure de voir votre domaine. Peut-être problème de réseau/hôtes etc .. (voir plus que si son cas)

Deuxième: Si vous voyez les résultats sur l'étape 1. Essayez et voir si vous obtenez quoi que ce soit:

$handle = fopen($url, "rb"); 
    $contents = ''; 
while (!feof($handle)) { 
    $contents .= fread($handle,1024); 
} 

Si vous obtenez une réponse à cela, alors il y a quelque chose qui ne va pas avec cURL.

-1

Je pense que vous devriez commencer par des contrôles standart:

Si PHP est compilé avec l'extension php_curl (ou l'extension est disponible en objet partagé). Vous pouvez le vérifier en mettant un

<?php 
if (!extension_loaded('curl')) 
{ 
    if (!dl('curl.so')) { 
     die('Cannot load php_curl extension'); 
    } 
} 
?> 

Si l'extension est chargé il pourrait y avoir un problème avec dns/pare-feu sur le serveur de l'ami. Il peut également être nécessaire d'utiliser un serveur proxy.

+0

Il semble que l'extension soit définitivement chargée. –

0

L'appel curl_exec() échoue-t-il immédiatement ou se bloque-t-il pendant 30 secondes environ jusqu'à expiration du délai? Si ce dernier, vous voudrez peut-être vérifier un problème de pare-feu.

Que vous dit curl_getinfo($ch)?

Questions connexes