Ce truc commence à me rendre dingue, donc je viens voir si vous n'avez pas une idée.
Je précise que la fichier php.ini est bien configuré pour utiliser la dll de curl.
Voici le morceau de code en question supposé utiliser l'api de google translate.
EN gros on envoie un lien et on a une traduction (quand je tape l'url ça fonctionne parfaitement, mais quand j'essaie de passer par curl pour avoir le résultat, plus rien !
- Code: Tout sélectionner
function translate($text,$origine,$destination){
$apiKey='macle';
$url = 'https://www.googleapis.com/language/translate/v2?key=' . $apiKey . '&q=' . rawurlencode($text) . '&source='.$origine.'&target='.$destination."/";
$fichLog=fopen("log.txt",'a+');
$handle = curl_init($url);
fwrite($fichLog,curl_error($handle));
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($handle);
// Vérification si une erreur est survenue
if(!curl_errno($handle)){
$info = curl_getinfo($handle);
fwrite($fichLog,'La requête a mis ' . $info['total_time'] . ' secondes à être envoyée à ' . $info['url']);
}
$responseDecoded = json_decode($response, true);
curl_close($handle);
return $responseDecoded['data']['translations'][0]['translatedText'];
}
J'ai commencé par voir que la fonction ne renvoyait rien, j'ai donc mis des logs pour essayer de voir ce qu'il se passait.
Il se trouve que response est déjà vide et ne contient rien.
Donc je me suis dis qu'il y avait un problème avec curl. Et apparemment c'est ça, sauf que le problème n'est pas réellement détecté.
EN fait, c'est comme si curl init renvoyait directement null, et que par la suite on ne détectait pas le problème.
En gros je vais rentrer dans la condition if(!curl_errno($handle)){
Mais au moment d'afficher $info = curl_getinfo($handle);
fwrite($fichLog,'La requête a mis ' . $info['total_time'] . ' secondes à être envoyée à ' . $info['url']);
$info sera sans valeur ou peut être chaine vide je ne sais pas, le fait est que ça me fait comme si tout se passait bien, pas d'erreur détecté, mais à coté de ça, c'est aussi comme si la fonction ne renvoyait rien du tout.
Sa me rend vraiment fou, je vois pas comment je peux réagir à une erreur qui n'est pas détecté par le code...
Pour vous donner une idée, voici ce que l'appel de cette fonction avec
Hello
en
fr
en paramètre devrait renvoyer sachant que c'est bien ce que me renvoie l'url
{
"data": {
"translations": [
{
"translatedText": "Salut !"
}
]
}
}
Celui qui me débloque est un dieu =)