2012-09-04 5 views
8

J'essaie de traiter le résultat de $data = curl_exec($ch); au lieu de l'imprimer à l'écran. Pour y parvenir, je mets l'option CURLOPT_RETURNTRANSFER à true comme ceci:CURLOPT_RETURNTRANSFER défini sur true ne fonctionne pas sur le serveur d'hébergement

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

Sur mon serveur local, cela fonctionne comme prévu, mais quand je mets le même fichier en ligne sur mon serveur, il ne fonctionne pas.

Lorsque je mets CURLOPT_RETURNTRANSFER à false cela fonctionne.

Qu'est-ce que je fais mal?

Répondre

17

Si vous définissez CURLOPT_RETURNTRANSFER à true ou 1 la valeur de retour de curl_exec sera le résultat réel de l'opération réussie. En d'autres termes, il ne renverra pas TRUE en cas de succès. Bien qu'il retournera FALSE en cas d'échec.

Comme décrit dans la section Valeurs de retour de curl-exec page manuel PHP: http://php.net/manual/function.curl-exec.php

Vous devez activer l'option CURLOPT_FOLLOWLOCATION pour réoriente, mais ce serait un problème si votre serveur est en safe_mode et/ou open_basedir est en vigueur qui peut causer des problèmes avec curl ainsi.

+1

peut-être je mets à tort la question. Je veux que le résultat soit retourné dans la variable. Donc, j'ai mis CURLOPT_RETURNTRANSFER à true et il devrait le faire mais il ne fonctionne pas sur le serveur d'hébergement mais sur localhost cela fonctionne très bien. peut-être que certains paramètres dans phi ini ne sont pas définis, je ne sais pas. –

+0

@MarcelGentSimonis J'ai édité ma réponse, vérifiez ce que safe_mode et open_basedir sont définis. Votre machine locale les a probablement désactivées –

+0

Notez que si elle n'est pas définie sur true, le retour de curl sera généré dans le cadre de ** votre ** réponse. Prenez une heure pour me rendre compte que la sortie étrange en haut de la page est parce que la sortie en boucle est sa réponse. –

0

Juste essayer cette ligne:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

après:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
+2

Pourquoi? Qu'est-ce que ça fait? Comment cela pourrait-il aider le PO? Elaborez votre réponse: vous devez aider l'OP à comprendre ce qui ne va pas, ne pas lui faire "essayer des choses au hasard" :-) –

Questions connexes