2012-06-29 9 views
0

Ceci est ma première fois en utilisant cURL de sorte qu'il pourrait être une erreur stupide de ma part, mais le code suivant:PHP/cURL erreur curl_exec()?

$ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $output = curl_exec($ch); 
    curl_close($ch); 
    echo $output; 

Prints « 1 ». Je crois comprendre que CURLOPT_RETURNTRANSFER doit s'assurer que curl_exec renvoie 0 ou le contenu, mais qu'il se comporte ici comme si CURLOPT_RETURNTRANSFER n'a pas été défini sur true. Est-ce que je manque quelque chose d'évident?

Merci!

+0

Votre code est correct pour faire ce que vous décrivez comme le résultat souhaité, il semble que le serveur à '$ url' renvoie' 1' dans le corps de la réponse - qu'obtenez-vous si vous le chargez dans un navigateur? Qu'y a-t-il dans $ url? Que fait 'var_dump ($ output);' (au lieu de 'echo')? – DaveRandom

+0

@DaveRandom Huh. var_dump ($ output); montre bool (true) ... impliquant que le contenu de la page n'est pas 1 et que c'est vraiment la fonction qui retourne vrai, oui? L'URL $ est https://www.facebook.com/feeds/page.php?id=159153294131249&format=atom10 (un flux d'une page de fan facebook que je souhaite transformer en simple objet XML). Je vous remercie! – user1492165

+0

@ user1492165 Essayez: http://itslennysfault.com/easy-way-to-load-facebook-news-feed-through-rss-atom10 – miqbal

Répondre

0

Je voudrais utiliser Guzzle, qui est un wrapper OOP autour de cURL. (Bien que vous utilisiez une requête GET, file_get_contents($url); fonctionnerait bien). Cependant, il n'y a pas vraiment de problème avec votre code. Êtes-vous sûr que l'URL est valide?

De même, vérifiez que curl_setopt renvoie true pour chaque appel et essayez de définir CURLOPT_URL à l'aide de cette fonction.

+0

'$ output = file_get_contents ($ url); echo $ output; ' N'imprime rien. Slash il doit provoquer une sorte d'erreur car aucun php après son exécution. Mais vous avez raison, je pense que je devrais pouvoir utiliser cette fonction ... – user1492165

+0

Ok, bien, display_errors ou erreur de connexion? – Lusitanian

+0

Aucune de ces choses ne semble être activée et je n'ai pas accès au fichier php.ini ...cependant j'ai essayé file_get_contents() sur un serveur différent et cela a fonctionné très bien donc je parie que c'est juste un arrangement étrange de la configuration de PHP sur l'autre serveur. Merci de votre aide! – user1492165

0

code semble correct, essayez curl_getinfo()

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
$outputInfo = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); 
curl_close($ch); 
echo $output . PHP_EOL; 
echo $outputInfo; 

Il peut-être possible que la ressource est littéralement retourne un corps avec « 1 »

0

J'ai eu un problème similaire que je résolus en utilisant

curl_setopt($ch, CURLOPT_FAILONERROR, TRUE); 

Le problème était que le serveur a renvoyé une page d'erreur personnalisée, que cURL a interprétée comme un succès. En utilisant cette option, le code d'en-tête de page d'erreur personnalisé de 404 a été détecté correctement et l'échec d'URL a été détecté. OP fait référence à l'utilisation de facebook comme cible, donc je soupçonne qu'un message d'erreur personnalisé a également été utilisé par l'URL cible.

Questions connexes