fonction imagejpeg() lors de miniaturisation (librairie GD)

fonction imagejpeg() lors de miniaturisation (librairie GD) - PHP - Programmation

Marsh Posté le 11-06-2009 à 22:35:37    

Bonjour,
 
Je teste un petit script de miniaturisation, mais ma dernière ligne pose problème.
 

Code :
  1. <?php
  2. // on donne à PHP le lien vers notre image à miniaturiser   
  3. $Image = "090603lmr1d.jpg"; 
  4. // on impose la taille de la largeur ou de la hauteur de la photo (le choix entre la largeur ou la hauteur se fait automatiquement, suivant que la photo est "horizontale" ou "verticale" )   
  5. $ratio = 490; 
  6. // on crée une ressource représentant en fait l'image à miniaturiser   
  7. $src=imagecreatefromjpeg($Image); 
  8. // on récupère les paramètres de notre image (getimagesize est une fonction qui retourne un tableau contenant les paramètres d'une image : sa largeur, son hauteur, son type, etc...)   
  9. $size = getimagesize($Image); 
  10. // on test si la largeur de l'image est supérieur à sa longueur   
  11. if ($size[0] > $size[1]) {
  12.    // on crée une ressource pour notre miniature  
  13.    $im=imagecreate(round(($ratio/$size[1])*$size[0]), $ratio);
  14.    // on place dans la ressource que nous venons de créer une copie de l'image originelle, redimensionnée et réechantillonée  
  15.    imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$size[1])*$size[0]),$ratio, $size[0], $size[1]); 
  16. else {
  17.    // si la largeur est inférieure ou égale à la hauteur, on entre dans ce cas  
  18.    // on crée une ressource pour notre miniature  
  19.    $im=imagecreate($ratio, round(($ratio/$size[0])*$size[1]));
  20.    // on place dans la ressource que nous venons de créer une copie de l'image originelle, redimensionnée et réechantillonée  
  21.    imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($size[1]*($ratio/$size[0])), $size[0], $size[1]); 
  22. // on définit le nom de notre miniature   
  23. $miniature = "mini_$Image"; 
  24. // on crée notre miniature   
  25. imagejpeg($im, $miniature);  //LIGNE 33 !!!!
  26. ?>


 
Le message retourné est le suivant :  

Code :
  1. Warning: imagejpeg() [function.imagejpeg]: Unable to open 'mini_090603lmr1d.jpg' for writing: Permission denied in /home/www/210749426b69527e61e114f8cf14a606/web/GD/mon_image.php on line 35


 
Pourtant, "mon support JPEG est bien disponible vu que PHP a été compilé avec GD-1.8 ou supérieur."
 
D'avance merci !


Message édité par oli1987 le 11-06-2009 à 22:58:56
Reply

Marsh Posté le 11-06-2009 à 22:35:37   

Reply

Marsh Posté le 11-06-2009 à 23:16:22    

1ère proposition:
tu devrais mettre des chemins absolus en utilisant $_SERVER["DOCUMENT_ROOT"] ou la constante __FILE__
car peut-être si cela semble fonctionner en lecture, peut-être qu'en écriture. Mais je doute que cela résolve le problème. Mais en tout cas cela reste un conseil pour que ton code reste portable car certain hébergeur on le répertoire courrant défini comme étant le répertoire d'installation d'apache qui est évidemment par sécurité interdit en droit d'écriture.
 
2ème proposition:
Ca arrive souvent car le document_root (racine du site) à des droits d'accès totalement différent de ceux du processus apache qui exécute le script PHP. En général le document root a pour propriétaire et groupe spécifique au système d'herbergement, alors que le propriétaire et groupe d'apache est "apache", il faut donc que le répertoire où le fichier de l'image est écrit aie des droits 777 (rwxrwxrwx). En général le repertoire a pour droits 700 ou 770 (rwx------ ou rwxrwx---), mais dans ton cas puisque l'image d'origine peut être lue les droits doivent être 755 ou 775 (rwxr-xr-x ou rwxrwxr-x). Essaie de changer les droits avec ton client FTP (Filezilla peut le faire), n'oublie pas de rafraichir pour voir si les droits on été appliqués. Si tu ne peux alors crée un sous-répertoire à ton compte ou au document root (document root conseillé pour permettre une balise HTML <IMG src=""/> ) avec des droits 777. La solution du sous répéertoire est conseillée plus que le changement de droit, sinon, n'importe qui pourrait bien avoir la possibilité de pirater ton site.


Message édité par Corebreaker le 11-06-2009 à 23:26:09
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed