Affichage d'images "denied"

Résolu
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009 - 16 oct. 2008 à 13:21
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009 - 17 oct. 2008 à 08:58
Bonjour,

Je développe actuellement un CMS complet pour le catalogue des publications d'un éditeur.

Dans la section 'administration' du CMS, il y a bien sure une option pour modifier un livre.
Je charge donc toutes les info. du livre choisi (via une liste fournie apres une requete SQL) dans un formulaire permettant ainsi a l'operateur du site d'y faire des modifications.

Mon probleme se situe sur l'affichage de la vignette du livre qui est entrain d'etre modifié. Tout fonctionne correctement, a part cela. J'utilise mozilla firefox, avec lequel j'ai le plugin 'WebDeveloper' dans lequel j'ai noté le message d'erreur suivant qui me rend perplexe.

"
Erreur : uncaught exception: Load of h:\xampp\htdocs\TESTS\v2.1\pic\sav\cgen\sci\cover-sciencebaseddev_thmb.jpg denied.
"

Quelqu'un(e) aurait la solution svp ?

D'Avance merci.

Cordialement,
tropnul

5 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
16 oct. 2008 à 16:39
Re,

L'erreur ne vient pas de code HTML, mais du PHP qui ouvre le fichier image (probablement pour la génération de la vignette, ou un truc dans le genre) et qui n'y parvient pas. Il lance alors une exception avec une ligne dans ce genre :
throw new Exception('Load of '. $quelquechose .' denied.');

L'exception n'étant pas interceptée par un bloc try...catch , PHP affiche alors 'uncaught exception', suivi du message d'erreur (ce qui se trouve dans les parenthèses du constructeur de l'Exception).

C'est plutôt de ce côté là qu'il faut chercher. Il se peut que ce soit un problème de permission : il faut que le script ait l'accès en lecture à la photo, ou l'accès en écriture à la vignette ou son répertoire, ce genre de truc.

Pas facile comme ça, sans savoir quelle classe tu utilises pour générer tes vignettes, sans en avoir le code, sans avoir un message d'erreur plus complet...

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
16 oct. 2008 à 14:01
Salut,

Il s'agit d'une exception lancée par le CMS, laquelle n'est pas attrapée.
Il n'est donc pas possible, avec ces informations, d'apporter une réponse au problème...
Le mieux est de regarder dans le code... Si le message d'erreur indique le fichier et la ligne, ça devrait aider, sinon... faut creuser...

Il se peut quand même que l'erreur soit toute bête et qu'il s'agisse soit d'un problème de permission, de fichier non trouvé, mal formé, ...

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
0
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
16 oct. 2008 à 14:57
Salut neigedhiver,

Voici une partie du code en question:

<fieldset>
   <legend>Couvertures:</legend>
   <label for="bookcov">* Couverture:</label>
  
   <label for="bookdel_fcov">Jetter cette image</label>
   <?php echo('

'); ?>
  
  

   <label for="bookisbn">* ISBN:</label>
   ">

   <label for="bookpages">* Nombre de Pages:</label>
   ">

   <label for="booksize">* Taille du livre:</label>
   ">

   <label for="bookprice">Prix:</label>
   ">

   <label for="bookcov">Couverture de dos:</label>
   <?php
   if ($howmany > 1) { # s'il existe une couverture de dos ...
      echo('');
      echo('<label for="bookdel_bcov">  Jetter cette image</label>');
      echo('

');
   }
   ?>
  
  

</fieldset>

Les seules lignes qui donc ne s'affichent pas (les images ne s'affichent pas dans mon navigateur, mais cela n'empeche pas que l'info de l'image ne soit pas présente dans le navigateur. j'ai regardé la source du navigateur pour en etre sur. Pour le moment, je ne vois que l'information du "alt") sont en rose.

Rha, mon bureau va fermer. LOL.

A dans 15 minutes, le temps d'arriver chez moi.

merci deja

Cordialement,
tropnul
0
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
16 oct. 2008 à 15:18
Je vais essayer de faire un chmod sur les images avant de faire le pour voir. comme tu le dis, c'est peut-être finalement qu'une erreur de permission...

Ce qui me rend perplexe c'est que lors de la phase de création de la vignette, j'ai utilisé une fonction qui prend en paramètre l'image originale fournie dans ce formulaire ci-dessus. j'avais bien fait un chmod juste avant et je n'ai pas eu de probleme.

Si c'est vraiment ça, je sors prendre l'air pour 2 jours minimum. ^^

Merci encore :)

tropnul
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
17 oct. 2008 à 08:58
Bonjour,

Je viens enfin de résoudre ce probleme.

Il s'agissait en fait d'une erreur de path vers la vignette ou toute autre image. En effet, lorsque je mets comme path de l'image dans le tag

');
?>

Et ça a finalement fonctionné.

En ce qui concerne la fonctionne que j'utilise pour générer mes vignettes, je n'ai fait que reprendre le code se trouvant dans la doc officielle de PHP. Et au final, ma fonction donne ça (sans les commentaires pour alléger le post):

function createThumb($source = NULL, $repository) {
    if ($source != NULL) {
        $thumb_width = 120;
        $thumb_height = 120;
        $ratio_thumb = $thumb_width / $thumb_height;
        list($width, $height, $type, $attr) = getimagesize($source);        $src_x 0; $src_y 0;
        $ratio_orig = $width / $height;
        if ($ratio_thumb > $ratio_orig) { $thumb_width = $thumb_height * $ratio_orig; }
        else { $thumb_height = $thumb_width / $ratio_orig; }
        $new_img = imagecreatetruecolor($thumb_width, $thumb_height);
        $pathinf = pathinfo($source);
        $extension = strtolower($pathinf['extension']);
        switch ($type) {
            case 2:
                $res_img=imagecreatefromjpeg($source);
                $mime = 'image/jpeg';
                break;
            case 3:
                $res_img=imagecreatefrompng($source);
                $mime = 'image/png';
                break;
        }
        imagecopyresampled($new_img, $res_img, 0, 0, $src_x, $src_y, $thumb_width, $thumb_height, $width, $height);
        $dest = preg_replace('/(\.[^$]+)$/i','',basename($source));
        $dest .= '_thmb.'.$extension;
        switch ($mime) {
            case 'image/jpeg':
                imagejpeg($new_img, $dest, 85);
                break;
            case 'image/png':
                imagepng($new_img, $dest, 4);
                break;
        }
        $source_dir = $repository . basename($source);
        copy($source, $source_dir);
        $dest_dir = $repository . basename($dest);
        copy($dest, $dest_dir);
        unlink($source);
        unlink($dest);
        imagedestroy($res_img);
        imagedestroy($new_img);
    }
    else return;
}
?>

Et ça fonctionne correctement jusqu'à présent. Ca redimensionne proportionnellement l'image fournie solon mes besoins. :)

Donc voila, merci encore neigedhiver pour m'avoir aiguillé.

Cordialement,
tropnul
0
Rejoignez-nous