[Doc] Impossible de déterminer les dimensions de l’image

Tutoriels concernant certaines erreurs qui peuvent survenir.

[Doc] Impossible de déterminer les dimensions de l’image

Messagepar lolovoisin » Ven 28 Nov 2008 13:53

» Problème de taille d'image
Ce tutoriel va vous permettre de vérifier que la fonction getimagesize() fonctionne bien sur votre serveur.

» Message d'erreur
Il se peut que lors de l'insertion d'image sur votre forum, dans votre signature ou pour les avatars distants, lorsque vous avez défini des tailles d'images maximales, vous voyez apparaitre ce message:
Impossible de déterminer les dimensions de l’image.


Cela provient souvent du réglage de la fonction getimagesize() qui est limitée chez certains hébergeur aux fichiers locaux (voire désactivée pour certains) . Ceci explique pourquoi ces images n'apparaissent pas lors de l'insertion dans les signatures ou les avatars distants par exemple.

» Test de la fonction getimagesize()
Pour savoir si l'image que vous voulez mettre pose problème ou pas, essayez ceci:

Créez un fichier image.php
dedans mettez-y le code suivant en remplaçant la partie http://adresse_de_votre_photo par l'adresse internet de votre photo.
Code: Tout sélectionner
$url_img = "http://adresse_de_votre_photo";

if (@ini_get('allow_url_fopen'))
{
   if (!function_exists(getimagesize))
   {
       echo 'Function getimagesize() indisponible';
       exit;
   }
   else
   {
       $info = getimagesize($url_img);
       foreach ($info as $key => $value)
       {
           echo $value."<br />";
       }
   }
}
else
{
   echo 'URL file-access is disabled in the server configuration'."<br/>".
   'Vérifiez que la valeur "allow_url_fopen" est à ON dans votre fichier php.ini sur votre serveur (si vous y avez accés)'."<br/>".
   'Si vous ne pouvez pas y accéder, veuillez regarder la suite du tutoriel '."<a href=\"http://forums.phpbb-fr.com/viewtopic_145720.html\">ICI</a>";
   exit;
}


Puis mettez-le sur votre serveur et exécutez-le ( http://www.votreforum.com/image.php )

Si tout se passe bien, alors vous devriez avoir une réponse ressemblant à:
800
533
2
width="800" height="533"
8
3
image/jpeg


/!\ NB:
Le bloc ci-dessus est un exemple ;)
Le résultat doit ressembler à ça, pas les valeurs ;)

» Résolution du problème.

Le problème semble surtout venir du réglage "allow_url_fopen" dans le php.ini.
Pour vérifier ce point, créez un fichier phpinfo.php, et mettez dedans:
Code: Tout sélectionner
<?php 
phpinfo();
?>

Puis mettez-le sur votre serveur et exécutez-le ( http://www.votreforum.com/phpinfo.php )
Dans la première partie (Configuration >>PHP Core ), cherchez la ligne "allow_url_fopen" et vous devez avoir en face ON.

Si ce n'est pas le cas, trois solutions possibles:
  • Si vous avez accès à votre php.ini, essayez de mettre ce réglage à ON, comme suit:
    Code: Tout sélectionner
    allow_url_fopen = On

  • sinon:
    OUVRIR: /includes/message_parser.php
    CHERCHEZ:
    Code: Tout sélectionner
     if ($stats === false)
             {                 

    REMPLACEZ PAR:
    Code: Tout sélectionner
     if ($stats === false)
          {
             if (function_exists('curl_exec'))
             {
                $c_img = curl_init();
                $c_timeout = 8; //The timeout, in seconds. You may want to change this
                $c_max_filesize = 64000; //The max file size loaded into memory
                curl_setopt($c_img, CURLOPT_URL, $in);
                curl_setopt($c_img, CURLOPT_RETURNTRANSFER, 1);
                @curl_setopt($c_img, CURLOPT_BUFFERSIZE, $c_max_filesize);
                curl_setopt($c_img, CURLOPT_CONNECTTIMEOUT, $c_timeout);
                curl_setopt($c_img, CURLOPT_FOLLOWLOCATION,1);
                $grabbed_img = @curl_exec($c_img);
                curl_close($c_img);
                $stats[0] = $stats[1] = false;
                if ($grabbed_img)
                {
                   $grabbed_img = @imagecreatefromstring($grabbed_img);
                   $stats[1] = @imagesx($grabbed_img);
                   $stats[0]= @imagesy($grabbed_img);
                   unset($grabbed_img, $c_img);
                }
                if (!$stats[0] || !$stats[1])
                {
                   $stats = false;
                }
             }
                     

    Puis sauvez le fichier et renvoyez-le sur le serveur.
  • Si cette solution ne fonctionne pas et que vous n'avez pas accès au fichier php.ini sur votre serveur, la seule chose à faire, est d'essayer de contacter votre hébergeur pour savoir si celui-ci peut modifier ce réglage.
Avatar de l’utilisateur
lolovoisin
Administrateur du site
Administrateur du site
 
Messages: 407
Inscription: Ven 28 Nov 2008 10:18

Retourner vers Tutoriel d'erreur

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron