IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

problème avec file_exists()


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut problème avec file_exists()
    Bonjour,

    Dans une page web, je doit accéder à des images qui sont stockées dans un répertoire data.
    je teste l'existence de l'image avant de l'afficher, si elle existe, je l'affiche, sinon, j'affiche une image par défaut.
    je suis sous linux.
    pour les premiers tests, j'avais mis mon répertoire data dans /var/www, mais pour le site en production, mon répertoire data est à la racine de ma machine, et j'ai rendu le répertoire public en paramétrant apache.

    et là, la fonction file_exists() ne fonctionne plus, ça m'affiche toujours l'image par défaut.
    mais si je ne fais pas le test d'existence de l'image et que je l'affiche directement, elle s'affiche correctement, c'est donc que le chemin d'accès est bon...

    qu'est ce qui cloche ?

    Merci,

    Nico

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Tu nous montres le bout de code incriminé ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (file_exists($path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'01.png')) {
    			echo '<td class="image_resultat">'.
    				'<a href="javascript:PopupImage(\''.$path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'01.png\', \'\',\'\')">'.
    				'<img src="'.$path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'0'.$i.'.png" width="150" border="0"></a></td>';
    		}
    		else {
    			echo '<td class="image_resultat">'.
    				'<img src="'.ARGO_IMG_DIR.'noimg.png" width="150" border="0"></td>';
    		}
    où $path, $prefix, $niveau et $annee sont des variables définies plus haut dans le code.
    ARGO_IMG_DIR est une variable définie dans un autre fichier php déclaré en include.

    si je met seulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<td class="image_resultat">'.
    				'<a href="javascript:PopupImage(\''.$path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'01.png\', \'\',\'\')">'.
    				'<img src="'.$path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'01.png" width="150" border="0"></a></td>';
    l'image s'affiche correctement.

    Nico

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Que vaut $i ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (file_exists($path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'01.png')) {
        echo '<td class="image_resultat">'.
             '<a href="javascript:PopupImage(\''.$path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'01.png\', \'\',\'\')">'.
             '<img src="'.$path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'0'.$i.'.png" width="150" border="0"></a></td>';
        }
    else {
        echo '<td class="image_resultat">'.
             '<img src="'.ARGO_IMG_DIR.'noimg.png" width="150" border="0"></td>';
    }

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut
    c'est une erreur. pour l'exemple c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (file_exists($path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'01.png')) {
        echo '<td class="image_resultat">'.
             '<a href="javascript:PopupImage(\''.$path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'01.png\', \'\',\'\')">'.
             '<img src="'.$path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'01.png" width="150" border="0"></a></td>';
        }
    else {
        echo '<td class="image_resultat">'.
             '<img src="'.ARGO_IMG_DIR.'noimg.png" width="150" border="0"></td>';
    }
    le $i, c'est parce que dans la page finale, j'affiche plusieurs images, et donc je met le bloc if... else... dans une boucle for avec un indice $i de 1 à 6.

    Nico

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Est-ce que le lien qui "entoure" ton image marche, lui ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut
    si je met seulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<td class="image_resultat">'.
             '<a href="javascript:PopupImage(\''.$path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'01.png\', \'\',\'\')">'.
             '<img src="'.$path.'map/'.$prefix.'-'.$niveau.'-'.$annee.'01.png" width="150" border="0"></a></td>';
    l'image s'affiche correctement et le lien fonctionne.

    Nicolas

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Extrait de la doc pour file_exists :

    Avertissement

    Cette fonction retourne FALSE pour les fichiers non accessibles en raison des restrictions du safe mode. Cependant, ces fichiers peuvent toujours être inclus s'ils sont dans le dossier safe_mode_include_dir.
    Extrait de php.ini pour la partie "Safe Mode"

    ;
    ; Safe Mode
    ;
    safe_mode = Off

    ; By default, Safe Mode does a UID compare check when
    ; opening files. If you want to relax this to a GID compare,
    ; then turn on safe_mode_gid.
    safe_mode_gid = Off

    ; When safe_mode is on, UID/GID checks are bypassed when
    ; including files from this directory and its subdirectories.
    ; (directory must also be in include_path or full path must
    ; be used when including)
    safe_mode_include_dir =
    Vérifie tes paramètres pour voir.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut
    effectivement, safe_mode et safe_mode_gid à off, safe_mode_include_dir vide

    j'ai essayé safe_mode=on et safe_mode_include_dir=/data, ça ne change rien.
    même en redémarrant apache.
    où est-ce que je me trompe ?

    Nico

  10. #10
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Laisse le à Off et le dir vide (bien qu'à Off, le dir n'est pas important...).

    Peux-tu faire un echo du path complet ? file_exists utilise des chemins du point de vue PHP, qui ne psont pas forcément les mêmes du point de vue HTML (dans le lien...).

    Et montre aussi ton include_path dans php.ini.

Discussions similaires

  1. problème avec file_exists
    Par Dark Ryus dans le forum Langage
    Réponses: 2
    Dernier message: 16/07/2008, 14h13
  2. Problème avec file_exists() sur un fichier réseau
    Par raiden83 dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2007, 12h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo