Probleme upload image php

Résolu
Bonjour,

Je veux créer un formulaire d'upload d'image chez free mais j'obtiens l'erreur suivante lorsque j'utilise la fonction filesize :

Warning: filesize() [function.filesize]: stat failed for logo2.jpg in /mnt/153/sda/5/3/morecraft/espace_membre.php on line 135

J'ai fais des recherches et il se trouve que upload_tmp_dir dans php.ini n'a pas de valeur (alors qu'il doit être, apparement à 777).

Avez-vous une solution en sachant que je n'ai pas accès au php.ini ?

Merci d'avance pour votre réponse.

4 réponses

  1. Bonsoir,

    le morceau de code concerné serait le bienvenue.
    est ce que ce code fonctionne en local ?

    les droits maximum à attribuer à un dossier sont 755 et ne devrait jamais être 777.
    1. Bonjour,

      Voilà le code du formulaire :


      <form method ="POST" action ="uplaod.php" enctype ="multipart/form-data">
      <!-- On limite le fichier à 100Ko -->
      <input type ="hidden" name ="MAX_FILE_SIZE" value ="100000">
      Fichier : <input type ="file" name ="skin">
      <input type ="submit" name ="envoyer" value ="Envoyer le fichier">
      </form >

      Et la page de traitement :


      <?php
      $dossier = './images/avatar/'; //repertoire de destination
      $fichier = basename ($_FILES['skin']['name']);
      $taille_maxi = 100000;
      $taille = filesize ($_FILES['skin']['tmp_name']); // ici le filesize
      $extensions = array ('.png', '.gif', '.jpg', '.jpeg', '.bmp'); //la liste des extensions utilisable
      $extension = strrchr ($_FILES['skin']['name'], '.');

      //Début des vérifications de sécurité...
      if (!in_array ($extension, $extensions)) //Si l'extension n'est pas dans le tableau
      {
      $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
      }
      if ($taille>$taille_maxi)
      {
      $erreur = 'Le fichier est trop gros...';
      }
      if (!isset ($erreur)) //S'il n'y a pas d'erreur, on upload
      {

      //On formate le nom du fichier ici...
      $fichier = strtr ($fichier,
      'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
      'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
      $fichier = preg_replace ('/([^.a-z0-9]+)/i', '-', $fichier);
      if (move_uploaded_file ($_FILES['skin']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
      {
      echo 'Upload effectué avec succès !';
      }
      else //Sinon (la fonction renvoie FALSE).
      {
      echo 'Echec de l\'upload !';
      }
      }
      else
      {
      echo $erreur;
      }

      ?>

      Malheureusement, je suis en vacance et je ne peux pas tester le code en local.

      Pouvez-vous m'expliquer ce que sont les droits d'accès à un dossier svp ?
      1. il ne faut pas utiliser filesize c'est normal de ne pas avoir les droits à ce moment.

        remplace

        $taille = filesize ($_FILES['skin']['tmp_name']);

        par

        $taille =$_FILES['skin']['size'];