probleme affichage camembert sous iis mais pas sous wampserver

Invité
Invité n'ayant pas de compte PHPfrance

28 oct. 2008, 15:01

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

ViPHP
ViPHP | 4674 Messages

28 oct. 2008, 15:46

Hey :),

Et que dit le manuel : php.net/image Comme PHP fait appel à GD, je doute que ça existe sous Windows …
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 oct. 2008, 15:49

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 ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Invité
Invité n'ayant pas de compte PHPfrance

28 oct. 2008, 15:51

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

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 oct. 2008, 15:59

Déjà peux tu faire un fichier contenant juste
phpinfo();

et regarder si GD (en faisant une recherche sur la page web) est activé ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

ViPHP
ViPHP | 4674 Messages

28 oct. 2008, 16:01

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é :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 422 Messages

28 oct. 2008, 16:21

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.

Invité
Invité n'ayant pas de compte PHPfrance

28 oct. 2008, 17:00

comment es-ce qu ecela s'affiche sur le php info ? j'arrive pas a le trouver

ViPHP
ViPHP | 4674 Messages

28 oct. 2008, 17:29

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é.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Invité
Invité n'ayant pas de compte PHPfrance

28 oct. 2008, 17:40

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

Mammouth du PHP | 2937 Messages

28 oct. 2008, 17:43

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

Invité
Invité n'ayant pas de compte PHPfrance

28 oct. 2008, 17:46

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 )

ViPHP
ViPHP | 4674 Messages

28 oct. 2008, 17:47

Regarde mon premier lien, tu devrais y trouver des choses intéressantes.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 2937 Messages

28 oct. 2008, 17:50

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.

ViPHP
ViPHP | 4674 Messages

28 oct. 2008, 17:58

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 :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).