Page 1 sur 1

probleme affichage camembert sous iis mais pas sous wampserv

Posté : 28 oct. 2008, 15:01
par Invité
Bonjour,

Voila, je crois que tout est dans le titre. J'ai une fenêtre qui normalement m'affiche des camemberts, qui fonctionne très bien sous wampserver, mais sous iis rien ne s'affiche. (je vous mets le code) :
<?php 
session_start(); 

/*
if (isset($_GET['a']))
    $a = $_GET['a'];

if (isset($_GET['b']))
    $b = $_GET['b'];
	
if (isset($_GET['c']))
    $c = $_GET['c'];

if (isset($_GET['d']))
    $d = $_GET['d'];
	*/
	$a=5;
	$b=10;
	$c=10;
	$d=10;

function camembert($arr)
{
   $size=3;                  /* taille de la police, largeur du caractère */
   $ifw=imagefontwidth($size);

   $w=500;                   /* largeur de l'image */
   $h=250;                   /* hauteur de l'image */
   $a=120;                   /* grand axe du camembert */
   $b=$a/2;                  /* 60 : petit axe du camembert */
   $d=$a/2;                  /* 60 : "épaisseur" du camembert */
   $cx=$w/2-1;               /* abscisse du "centre" du camembert */
   $cy=($h-$d)/2;            /* 95 : ordonnée du "centre" du camembert */

   $A=138;                   /* grand axe de l'ellipse "englobante" */
   $B=102;                   /* petit axe de l'ellipse "englobante" */
   $oy=-$d/2;                /* -30 : du "centre" du camembert à celui de l'ellipse "englobante"*/

   $img=imagecreate($w,$h);  
   $bgcolor=imagecolorallocate($img,0xCD,0xCD,0xCD);
   imagecolortransparent($img,$bgcolor);
   $black=imagecolorallocate($img,0,0,0);
                             /* calcule la somme des données */
   for ($i=$sum=0,$n=count($arr);$i<$n;$i++) $sum+=$arr[$i][0];

   /* fin des préliminaires : on peut vraiment commencer! */
   for ($i=$v[0]=0,$x[0]=$cx+$a,$y[0]=$cy,$doit=true;$i<$n;$i++) {
      for ($j=0,$k=16;$j<3;$j++,$k-=8) $t[$j]=($arr[$i][1]>>$k) & 0xFF;
                             /* détermine les "vraies" couleurs */
      $color[$i]=imagecolorallocate($img,$t[0],$t[1],$t[2]);
                             /* calcule l'angle des différents "secteurs" */
      $v[$i+1]=$v[$i]+round($arr[$i][0]*360/$sum);

      if ($doit) {           /* détermine les couleurs "ombrées" */
         $shade[$i]=imagecolorallocate($img,max(0,$t[0]-50),max(0,$t[1]-50),max(0,$t[2]-50));

         if ($v[$i+1]<180) { /* calcule les coordonnées des différents parallélogrammes */
            $x[$i+1]=$cx+$a*cos($v[$i+1]*M_PI/180);
            $y[$i+1]=$cy+$b*sin($v[$i+1]*M_PI/180);
         }
         else {
            $m=$i+1;
            $x[$m]=$cx-$a;   /* c'est comme si on remplaçait $v[$i+1] par 180° */
            $y[$m]=$cy;
            $doit=false;     /* indique qu'il est inutile de continuer! */
         }
      }
   }

   /* dessine la "base" du camembert */
   for ($i=0;$i<$m;$i++) imagefilledarc($img,$cx,$cy+$d,2*$a,2*$b,$v[$i],$v[$i+1],$shade[$i],IMG_ARC_PIE);

   /* dessine la partie "verticale" du camembert */
   for ($i=0;$i<$m;$i++) {
      $area=array($x[$i],$y[$i]+$d,$x[$i],$y[$i],$x[$i+1],$y[$i+1],$x[$i+1],$y[$i+1]+$d);
      imagefilledpolygon($img,$area,4,$shade[$i]);
   }

   /* dessine le dessus du camembert */
   for ($i=0;$i<$n;$i++) imagefilledarc($img,$cx,$cy,2*$a,2*$b,$v[$i],$v[$i+1],$color[$i],IMG_ARC_PIE);

   /*imageellipse($img,$cx,$cy-$oy,2*$A,2*$B,$black); // dessine l'ellipse "englobante" */

   /* dessine les "flêches" et met en place le texte */
   for ($i=0,$AA=$A*$A,$BB=$B*$B;$i<$n;$i++) if ($arr[$i][0]) {
      $phi=($v[$i+1]+$v[$i])/2;      
                             /* intersection des "flêches" avec l'ellipse "englobante" */
      $px=$a*3*cos($phi*M_PI/180)/4;
      $py=$b*3*sin($phi*M_PI/180)/4;
                             /* équation du 2ème degré avec 2 racines réelles et distinctes */
      $U=$AA*$py*$py+$BB*$px*$px;        
      $V=$AA*$oy*$px*$py;
      $W=$AA*$px*$px*($oy*$oy-$BB);
                             /* calcule le pourcentage à afficher */
      $value=number_format(100*$arr[$i][0]/$sum,2,',','').'%';
                             /* écrit le texte à droite */
      if ($phi<90 || $phi>270) {          
         $root=(-$V+sqrt($V*$V-$U*$W))/$U;
         imageline($img,$px+$cx,$py+$cy,$qx=$root+$cx,$qy=$root*$py/$px+$cy,$black);
         imageline($img,$qx,$qy,$qx+10,$qy,$black);

         imagestring($img,$size,$qx+14,$qy-12,$arr[$i][2],$black);
         imagestring($img,$size,$qx+14,$qy-2,$value,$black);
      }
      else {                 /* écrit le texte à gauche */
         $root=(-$V-sqrt($V*$V-$U*$W))/$U;
         imageline($img,$px+$cx,$py+$cy,$qx=$root+$cx,$qy=$root*$py/$px+$cy,$black);
         imageline($img,$qx,$qy,$qx-10,$qy,$black);

         imagestring($img,$size,$qx-12-$ifw*strlen($arr[$i][2]),$qy-12,$arr[$i][2],$black);
         imagestring($img,$size,$qx-12-$ifw*strlen($value),$qy-2,$value,$black);
      }
   }

   header('Content-type: image/png');
   imagepng($img);
   imagedestroy($img);
}



$arr=array();
if ($a!=0) { $arr[]=array($a, 0x99CC00, "Notation 1"); } 
if ($b!=0) { $arr[]=array($b, 0x339966, "Notation 2"); } 
if ($c!=0) { $arr[]=array($c, 0x33CCCC, "Notation 3"); } 
if ($d!=0) { $arr[]=array($d, 0x0091C3, "Notation 4"); } 

camembert($arr);   
 ?>
faut il faire un paramétrage pour que cela fonctionne sous iis, ou quelque chose a ajouter ? merci

Posté : 28 oct. 2008, 15:46
par Hywan
Hey :),

Et que dit le manuel : php.net/image Comme PHP fait appel à GD, je doute que ça existe sous Windows …

Posté : 28 oct. 2008, 15:49
par mere-teresa
Hey :),

Et que dit le manuel : php.net/image Comme PHP fait appel à GD, je doute que ça existe sous Windows …
WampServer c'est sous Windows aussi...tu voulais dire sous IIS ?

Posté : 28 oct. 2008, 15:51
par Invité
donc ce que vous voulez dire c'est que gd n'est pas installé sous iis ? comment je fais pour l'installer dans ce cas ?

merci

Posté : 28 oct. 2008, 15:59
par mere-teresa
Déjà peux tu faire un fichier contenant juste
phpinfo();

et regarder si GD (en faisant une recherche sur la page web) est activé ?

Posté : 28 oct. 2008, 16:01
par Hywan
Hey :),

Et que dit le manuel : php.net/image Comme PHP fait appel à GD, je doute que ça existe sous Windows …
WampServer c'est sous Windows aussi...tu voulais dire sous IIS ?
Exact. Merci mere-teresa d'avoir précisé :).

Posté : 28 oct. 2008, 16:21
par caroube
GD n'a rien, mais alors strictement rien à voir avec Apache ou IIS.
Il suffit que le module de PHP php_gd2.dll soit activé dans le php.ini pour que GD soit disponible dans PHP quelque soit le serveur Web utilisé.

Peut-être une première chose à faire, après avoir vérifié le phpinfo, c'est un code tout simple pour voir si tu arrives à dessiner une image avec GD dans l'une ou l'autre des configs parce que ton camembert, j'arrive parfaitement à le dessiner avec PHP sous IIS.

Posté : 28 oct. 2008, 17:00
par Invité
comment es-ce qu ecela s'affiche sur le php info ? j'arrive pas a le trouver

Posté : 28 oct. 2008, 17:29
par Hywan
C'est qu'il n'est pas installé (ou chargé) alors. Normalement, tu as un titre de section nommé « GD ». Un simple Pomme + F (ou Ctrl + F pour les autres là ;-)) devrait suffir à le trouver, sinon bah, il n'est ni chargé ni installé.

Posté : 28 oct. 2008, 17:40
par Invité
sur mon php.ini j'ai enlevé le ; devant extension=php_gd2.dll. j'ai redémarrer. mais toujours rien d'affiché!!! Le seul gd que j'ai d'afficher est afficher sous la forme : Configure Command cscript /nologo configure.js "--enable-snapshot-build" "--with-gd=shared"

il faut que je fasse quoi dans se cas ?

merci

Posté : 28 oct. 2008, 17:43
par Victor BRITO
comment es-ce qu ecela s'affiche sur le php info ? j'arrive pas a le trouver
Tu peux aussi utiliser la fonction get_loaded_extensions(), qui retourne un tableau des extensions chargées sur le serveur :
print_r (get_loaded_extensions ());

Posté : 28 oct. 2008, 17:46
par Invité
cela m'affiche ça :
Array ( [0] => bcmath [1] => calendar [2] => com_dotnet [3] => ctype [4] => date [5] => ftp [6] => hash [7] => iconv [8] => odbc [9] => pcre [10] => Reflection [11] => session [12] => libxml [13] => standard [14] => tokenizer [15] => zlib [16] => SimpleXML [17] => dom [18] => SPL [19] => wddx [20] => xml [21] => xmlreader [22] => xmlwriter [23] => ISAPI [24] => mysql )

Posté : 28 oct. 2008, 17:47
par Hywan
Regarde mon premier lien, tu devrais y trouver des choses intéressantes.

Posté : 28 oct. 2008, 17:50
par Victor BRITO
cela m'affiche ça :
Array ( [0] => bcmath [1] => calendar [2] => com_dotnet [3] => ctype [4] => date [5] => ftp [6] => hash [7] => iconv [8] => odbc [9] => pcre [10] => Reflection [11] => session [12] => libxml [13] => standard [14] => tokenizer [15] => zlib [16] => SimpleXML [17] => dom [18] => SPL [19] => wddx [20] => xml [21] => xmlreader [22] => xmlwriter [23] => ISAPI [24] => mysql )
L'extension GD n'est donc pas chargée.

Posté : 28 oct. 2008, 17:58
par Hywan
Il existe plein de façon de faire Victor : extension_loaded() qui indique directement sans lister. Ou sinon, un simple $ php -m, enfin bon, il existe plein de solutions :).