PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 09-04-2011 21:51:46

ebouilleur
Membre
Lieu : Nantes
Inscription : 19-05-2009
Messages : 165
Site Web

Warning: getimagesize

Bonjour,

Ca fait un bout de temps que je bute sur l'upload d'images.
Mon script fonctionne car je l'utilise ailleurs, mais là j'ai l'erreur :

Warning: getimagesize(avatar020.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home/ebouilleur/pet-racing/beta/gang.php on line 38

Et je n'arrive pas a comprendre pourquoi..

Voici mon code :


if (isset($_POST['submitted']))  {    
     $avatar = $_POST['avatar'];
     $name = $_FILES['avatar']['name'];
   $type = $_FILES['avatar']['type'];      
   $tmp_name = $_FILES['avatar']['tmp_name'];

  echo "name : ".$name." type : ".$type." tmp_name : ".$tmp_name;

     if ($name != "") {
            if (strcmp(substr($type,-4),TYPE_AUTORISE)!=0) {
               F_afficherErreur("Ce format d'image n'est pas autorisé", "options_forums.php");
            }
       
            $size_tmp=getimagesize($_FILES['avatar']['tmp_name']);
           
            if ($size_tmp[0] > 80 || $size_tmp[1] > 80) {
               echo "l'image est trop grande !";
            }  
       
        $nouveau_nom = "avatar/".$_SESSION['serveur']."/avatar_".$sess_id_pseudo.".jpg";
          $nouveau_nom2 = $chemin_img."/avatar/".$_SESSION['serveur']."/avatar_".$sess_id_pseudo.".jpg";
           echo "<br>nouveau_nom : ".$nouveau_nom;
           echo "<br>nouveau_nom2 : ".$nouveau_nom2;          
          // on bouge l'image apres avoir supprimé l'ancienne
          @unlink($nouveau_nom);
         
          move_uploaded_file($_FILES['avatar']['tmp_name'], $nouveau_nom2);
 

Et mon echo de débug me sort bien les bonnes info :

name : avatar020.jpg type : image/jpeg tmp_name : /tmp/phpkb47pU
nouveau_nom : avatar/beta/avatar_10045.jpg
nouveau_nom2 : /home/ebouilleur/pet-racing/media/avatar/beta/avatar_10045.jpg
Warning: unlink(avatar/beta/avatar_10045.jpg) [function.unlink]: No such file or directory in /home/ebouilleur/pet-racing/beta/gang.php on line 49

Il y a bien les droits 777 sur le répertoire qui stock les images.

Si vous aviez une idée ca m'aiderai bcp wink
Merci

Hors ligne

#2 10-04-2011 08:56:34

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Warning: getimagesize

move_uploaded_file() fonctionne avec la racine web, donc je ne pense pas que ton fichier existe vu que tu pars de la racine de ton système.

Hors ligne

#3 10-04-2011 11:53:47

ebouilleur
Membre
Lieu : Nantes
Inscription : 19-05-2009
Messages : 165
Site Web

Re : Warning: getimagesize

move_uploaded_file() fonctionne bien, ce qui a priori pose problème c'est la ligne 14, avec le getimagesize

Hors ligne

#4 10-04-2011 12:16:33

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Warning: getimagesize

Ah oui autant pour moi j'avais cru comprendre que cette fonction était dans un autre script suite à l'ajout de l'image via celui-ci.
Le soucis à mon avis c'est que cette fonction est incapable de te trouver le dossier temporaire.
En effet il n'est pas sur ton espace web, donc /tmp il peut toujours courir. hmm
Malheureusement je n'ai aucune solution qui me vient à l'esprit.

Hors ligne

#5 10-04-2011 12:44:36

ebouilleur
Membre
Lieu : Nantes
Inscription : 19-05-2009
Messages : 165
Site Web

Re : Warning: getimagesize

Le truc le plus incroyable, c'est que ce code fonctionne tres bien sur une autre page (dans le meme répertoire) et quand je fais un copier/coller du code, ca ne fonctionne plus... limite c'est magique hmm

Hors ligne

#6 10-04-2011 13:37:34

ebouilleur
Membre
Lieu : Nantes
Inscription : 19-05-2009
Messages : 165
Site Web

Re : Warning: getimagesize

bon j'ai trouver.
La différence entre mes 2 fichiers, c'est que celui qui e fonctionnait pas faisait un include sur le code suivant (qui permet de "bloquer" l'utilisateur qui fait un "rafraichir" et donc ca ne repost pas le formulaire, sauf que la ca fout le bordel hmm )

<?php
if(!empty($_POST) OR !empty($_FILES))
{
    $_SESSION['sauvegarde'] = $_POST ;
    $_SESSION['sauvegardeFILES'] = $_FILES ;
   
    $fichierActuel = $_SERVER['PHP_SELF'] ;
    if(!empty($_SERVER['QUERY_STRING']))
    {
        $fichierActuel .= '?' . $_SERVER['QUERY_STRING'] ;
    }
   
    header('Location: ' . $fichierActuel);
    exit;
}

if(isset($_SESSION['sauvegarde']))
{
    $_POST = $_SESSION['sauvegarde'] ;
    $_FILES = $_SESSION['sauvegardeFILES'] ;
   
    unset($_SESSION['sauvegarde'], $_SESSION['sauvegardeFILES']);
}

?>

Sinon le code est bien fonctionnel wink
Merci

Hors ligne

Pied de page des forums