#1 2013-01-09 12:26:13

cljosse
Former Piwigo Team
2006-11-12
1167

J'ai un problème avec curl_exe

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

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???

Dernière modification par cljosse (2013-01-09 12:30:00)

Hors ligne

#2 2013-01-09 14:31:27

flop25
Équipe Piwigo
2006-07-06
6544

Re: J'ai un problème avec curl_exe

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é

Hors ligne

#3 2013-01-09 14:42:53

julien1311
Membre
2010-09-01
141

Re: J'ai un problème avec curl_exe

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 ?

Hors ligne

#4 2013-01-09 15:24:13

cljosse
Former Piwigo Team
2006-11-12
1167

Re: J'ai un problème avec curl_exe

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).

Code:

  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();

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact