Savoir si une image existe

Eléphanteau du PHP | 24 Messages

29 août 2006, 10:47

Bonjour,

Je voudrais savoir si une image existe avant de l'afficher.

J'ai essayer avec le fonction file_exists(); mais apparament, l'herbergeur chez qui je suis à bloquer avec le safe_mod et je ne peux pas l'utiliser pour les images.

Pourriez vous me dire comment je peux faire.

Merci d'avance pour votre réponse.

A+
Guillaume

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 août 2006, 10:59

Tu peux essayer avec is_file() à la place, celui là ne sera peut être pas bloqué :)

Eléphanteau du PHP | 24 Messages

29 août 2006, 15:04

Re bonjour,

Je te remercie pour la rémponse, je viens d'essayer ce code ci-dessous, et celà me retourne que le fichier n'existe pas, or il existe.
<?php
$filename = 'http://www.jeudi8h.com/images/produit/mv2-technaxx_small.JPG';

if (is_file($filename))
{
   print "Le fichier $filename existe";
} else {
   print "Le fichier $filename n'existe pas";
}
?>
Une autre idée peut-être.

A+
Guillaume

Eléphant du PHP | 445 Messages

29 août 2006, 15:12

Peut-être qu'en mettant l'adresse comme ceci cela fonctionnera...
$filename = '/images/produit/mv2-technaxx_small.JPG';
Mais bon, à vrai dire j'en sais rien ^^'
LLDC
Ulti

Mammouth du PHP | 19672 Messages

29 août 2006, 15:17

J'ai un drôle de doute les copains : sur un système Linux, en mettant "/images/produit/mv2-technaxx_small.JPG", l'application va chercher un répertoire nommé "image" à la racine du disque dur... enfin me semble. D'autre part, selon la configuration, sous Windows, ça peut ne pas marcher non plus puisque ça va chercher un répertoire "images" à la racine du serveur, donc en général du répertoire "www".

Si vous voulez mettre un chemin relatif qui marche partout et à tous les coups, il faudrait mettre : "./images/produit/mv2-technaxx_small.JPG" et là on est en relatif par rapport à la page qui s'exécute.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 août 2006, 15:37

Normalement, is_file() et file_exists() sont fait pour fonctionner sur des fichiers locaux et tu devrais donc normalement utiliser un chemin relatif (ou absolu, mais bon c'est pas top, il vaut mieux éviter les "/..." et "C:\..." ) par rapport au système de fichier.
(Je crois que les url fonctionnent à partir de php5, mais je n'en suis pas sur)

Pour le "./" c'est effectivement ce qu'il y a de plus sur pour construire un chemin relatif, bien qu'il ne soit pas nécessaire car considéré comme valeur par défaut (forcément :)

"./dir" revient au même que "dir"
"./../dir" revient au même que "../dir"
"/dir" en revanche équivaut à un "C:\dir" et sont des chemins absolus partant de la racine du système.

(Le comportement est différent en html ou l'on ne travail pas sur le système de fichier, mais sur les url, le "/" correspondant alors à la racine du domaine :))

Eléphanteau du PHP | 24 Messages

29 août 2006, 16:22

Je vous remercie pour vos réponses. En effet, il ne faut pas mettre l'adresse url mais l'adresse relative.

Bonne continuation et à une prochaine.

A+
Guillaume