Ok ça je l'ai bien compris, CURLOPT_RETURNTRANSFER est bien mis a 1
Effectivement le curl_exe n'a pas marché, c'est là mon interrogation pourquoi avec easyphp5.3.9 cela marche mais pas avec easyPHP12.1
Je ne vois pas de quelle configuration cela peut venir.
Code complet ci dessous(extrait de gvideo).
function download_remote_file($src, $dest) { if (empty($src)) return false; $return = ($dest === true) ? true : false; /* curl */ if (function_exists('curl_init')){ if (!$return) $newf = fopen($dest, "wb"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $src); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-language: en")); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'); if (!ini_get('safe_mode')){ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_MAXREDIRS, 1); } if (strpos($src, 'https://') !== false) { curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); } if (!$return) { curl_setopt($ch, CURLOPT_FILE, $newf); } else { curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); } $out = curl_exec($ch); curl_close($ch); if ($out === false){ return 'file_error'; } else if (!$return) { fclose($newf); return true; } else { return $out; } } else if (ini_get('allow_url_fopen')) { /* file get content */ if (strpos($src, 'https://') !== false and !extension_loaded('openssl')) { return false; } $opts = array( 'http' => array( 'method' => "GET", 'user_agent' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)', 'header' => "Accept-language: en", ) ); $context = stream_context_create($opts); if (($file = file_get_contents($src, false, $context)) === false) { return 'file_error'; } if (!$return) { file_put_contents($dest, $file); return true; }else { return $file; } } return false; } echo "download_remote<br>"; $src= "https://api.dailymotion.com/video/xu5msq_theatre-equestre_creation?fields=description,thumbnail_large_url,title,owner.username,tags"; $video = download_remote_file($src, true);; echo "<pre><fieldset><legend>Informations:curl:</legend>".$video."</fieldset>"; // phpinfo();
Bonjour,
Ca ne peut pas être un bête problème de pare-feu ? Peut-être que easyphp 12 utilise des ports "exotiques" bloqués par défaut par l'OS ?
Salut
CURLOPT_RETURNTRANSFER doit être On pour retourner le résultat, http://php.net/manual/en/function.curl-exec.php
et vu le === false, c'est que vraiment $out est False pas null, donc que curl n'a pas marché
Problème:
En local pour mes tests j'utilise soit easyphp 5.3.9 ou easyphp 12.1.
Pour afficher des videos je fais appel au plugin Embedded Videos
Avec easyphp 5.3.9 (PHPVersion 5.3.9) pas de problème je récupère bien les informations
mais avec easyphp 12.1 (PHPVersion 5.4.8) impossible de faire de même.
extrait du code
$out = curl_exec($ch); curl_close($ch); if ($out === false) { return 'file_error'; }
La valeur la variable $out est nulle, donc retour file_error.
dans les deux cas ini_get('safe_mode' = false
easyphp 12.1 permet de changer de version PHP mais en PHP Version 5.3.20 le problème semble identique.
Quelle action mener dans les fichiers de configurations du serveur pour que le fonctionnement soit identique???