Php

Bonjour,
J'ai creer un formulaire php auquel j'y ai ajouter une possibilite de joindre une photo (taille maxi 5Mo), probleme lorsque je remplie mon formulaire et que je souhaite joindre une photo losque je clique sur envoie, il me met une erreur comme quoi c'est impossible de copier le fichier dans upload/des numero.
J'ai essayer de creer se sous repertoire a la racine de mon site, meme prob, et a la racine de mon formulaire meme prob aussi...
J'ai aussi essayer de mettre un chmod 777 sur le repertoir upload a la racine du site via filzilla mais toujours le meme probleme. "Impossible de copier le fichier dans upload/chiffre" est le message qui reviens a chaque fois; je voi pas d'ou ca vient....

Est ce que quelqun peut m'aider.
Merci

5 réponses

  1. Votre php.ini est-il bien configuré pour accepter l'upload ?

    * file_uploads
    * upload_max_filesize
    * max_input_time
    * memory_limit
    * max_execution_time
    * post_max_size

    Même chose pour le httpd.conf avec la variable LimitRequestBody

    voir ce lien http://www.radinks.com/upload/config.php

    Quel est le message d'erreur exact ?

    Ca peut être aussi un problème de droits liés au groupe et propriétaire du répertoire (chown)
    1. Le Message exact est "impossible de copier le fichier dans upload/19846581"

      Merci
    2. je viens de verifier je n'ai pas de php.ini, comment on cree se fichier et ou le met on

      Merci
  2. Bonjour,

    peut tu montrer le code de ton formulaire ,merci sa aidera !

    1. <?PHP
      $url_upload='';
      $data='';
      $data.='Nom :='.$_POST["id_44"].'<br>';
      $data.='Travaux :='.$_POST["hidden_45"].'<br>';
      $data.='Adresse :='.$_POST["id_46"].'<br>';
      $data.='Code Postal :='.$_POST["id_47"].'<br>';
      $data.='Ville :='.$_POST["id_48"].'<br>';
      $data.='Votre E-Mail :='.$_POST["id_49"].'<br>';
      $data.='Telephone :='.$_POST["id_50"].'<br>';
      $data.='Demande :='.$_POST["id_51"].'<br>';
      $data.='Descriptif de vos travaux :='.$_POST["id_52"].'<br>';
      $chiffre=rand(100,999).rand(100,999).rand(100,999);
      $content_dir = 'upload/';
      $content_dir.=$chiffre."/";
      $envoi_mail_pj=1;
      IF (!file_exists("./upload")){
      umask(0);
      @mkdir("./upload",0777);
      }
      IF (!file_exists("./upload/$chiffre")){
      umask(0);
      @mkdir("./upload/$chiffre",0777);
      }$nb_fic=0;
      $url_chemin=str_replace("envoi.php","",$_SERVER["SCRIPT_URI"]);

      $tmp_file = $_FILES['id_58']['tmp_name'];
      if ($tmp_file<>""){
      if( !is_uploaded_file($tmp_file) )
      {
      exit("Le fichier est introuvable");
      }

      if ( $_FILES['id_58']['size']>6000000){
      exit("Le poids de votre fichier est trop important.");
      }

      // on vérifie maintenant l'extension
      $type_file1 = explode(".",$_FILES['id_58']['name']);

      $type_file=strtolower($type_file1[count($type_file1)-1]);
      IF (!strstr($type_file, 'jpg')&& !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png') ){
      exit("Ce type de fichier n'est pas autorisé.");
      }

      // on copie le fichier dans le dossier de destination
      $name_file = $_FILES['id_58']['name'];

      if( @preg_match('#[\x00-\x1F\x7F-\x9F/\\]#', $name_file))
      {
      exit("Nom de fichier non valide");
      }
      else {
      if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
      {
      exit("Impossible de copier le fichier dans $content_dir");
      }
      else {
      $url_upload.='fichier à télécharger sur le serveur : '.$url_chemin.$content_dir . $name_file.'<br>';
      $nb_fic++;
      $tab_fic[$nb_fic][0]=$content_dir . $name_file;
      $tab_fic[$nb_fic][1]=$_FILES['id_58']['type'];
      }
      }
      }

      $data.=$url_upload;
      include('mimemail.php');
      if (!$fp=fopen('./upload/'.$chiffre.'/renseignements.htm','w')){}else {;
      fputs($fp,$data);
      fclose($fp);}
      $m = new CMIMEMail('Vous <moi@moi.com>','<moi@moi.com>','demande de renseignement');
      $m->mailbody($data,$data);
      if ($nb_fic>0 && $envoi_mail_pj==1){
      $x=1;

      while ($x<=count($tab_fic)){

      $m->attachFile($tab_fic[$x][0],$tab_fic[$x][1]);
      $x++;
      }
      }
      $m->send();
      header("location: merci.html");
      exit();
      ?>
  3. Dans le code je vois que vous créez le répertoire, ça marche ça ?

    Le répertoire est bien créé ?

    Je vous conseillerais bien de créer le répertoire en dur avec votre FTP, de mettre les droits, puis de commenter la partie création répertoire dans le code et de réessayer.
    1. en plus vous créez des sous répertoires
      donc il faut des droits récursifs sur /upload
    2. Dans le code je vois que vous créez le répertoire, ça marche ça ?

      Le répertoire est bien créé ?

      Je ne comprend pas mon code est il faut ?
      les sous répertoires il le crée en automatique
    3. Etes-vous certain que le répertoire upload est bien créé sur votre serveur web ?
      Si ça ce trouve PHP n'a pas suffisament de droits pour créer des répertoires
    4. upload est bien créé sur mon serveur
    5. ok
      et vous avez regardé les variables du php.ini et du httpd.conf ?
  4. Certains serveur empechent leurs utilisateurs d'octroyer tout les droits a leurs dossiers
    pour verifier ca il te sufffit de crer un dossier en ch mode 777 via ton code php
    ensuite avec ton navigateur ftp verifier ce meme dossier a bel et bien gardé cette propriété
    clique droit sur dossier ==> propriété
    1. et si telle est pas le cas
    2. a ce moment la tu dois changer ton script
      de facon a creer ton script via la ftp
      exemple

      $ftp = ftp_connect("$host"); // On prépare la connexion

      ftp_login($ftp,"$login","$password"); // On se connecte au serveur

      ftp_mkdir ($ftp,"dossier-voitures /image-ferrari"); // Création du dossier. (chemin depuis la racine du serveur)

      ftp_quit ($ftp); // On se déconnecte du serveur

      ici tu trouvera toute les possibilités de la fonction ftp qui fait exactement la meme chose que celle que tu utilise actuellement
      seulement avec cette fonction tes droits restent a 777 et ne changent pas

      https://www.php.net/manual/fr/ref.ftp.php

      ;)