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 :

[Upload] Upload de fichier


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 28
    Par défaut [Upload] Upload de fichier
    Bonsoir,
    Je viens "Implorer votre aide", car je suis face à un problème et je sèche totalement. Cela fait plusieurs heures que j'essaie de comprendre pourquoi la fonction move_uploaded_file au sein de mon script ne fonctionne pas.

    Voilà ma config : je suis sur un server virtuel chez 1and1, sur Apache2 en mode sécurisé ( j'ai aussi fait des test en mode non sécurisé, pas de différence). Je souhaite uploader une photo, et l'upload bloque à ce niveau là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if( !move_uploaded_file($tmp_file , $destination'.jpg') )
    	{
               // Affiche une erreur
     
            }
    else{ //OK }
    J'ai fait des tests et ai affiché quelques variables :
    Voici le var_dump de la variable $_FILES ( Tout est normal ) :
    array(1) { ["photo"]=> array(5) { ["name"]=> string(23) "colliers-2422911126.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpLkwxwq" ["error"]=> int(0) ["size"]=> int(17166) } }

    La photo est bien uploadée, elle est bien reconnue comme Jpeg, sa taille est bonne (meme que sur mon disque), pas d'erreur affichée ... rien.

    Si vous avez une idée sur comment régler ce problème.... HEEEEEELP !!!

    Merci d'avance.

    PS : Ce script marche trés bien sur mon pc en local (sous windows )

  2. #2
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par cyrilskof Voir le message
    Bonsoir,
    Je viens "Implorer votre aide", car je suis face à un problème et je sèche totalement.
    PS : Ce script marche trés bien sur mon pc en local (sous windows )
    Si ton PHP marche en local, c'est que le PHP est bon

    S' il ne marche pas sur ton serveur, c'est que
    les fonctions traitement image de PHP ne sont pas activées
    OU les droit en ecriture sur les répertoires non donnés
    OU la taille maxi et temps d'attente sont mal configurés .... etc ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 28
    Par défaut re
    J'ai ajouté cette ligne avant le move_uploaded_file :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chmod($tmp_file, 0777);
    Ca ne change rien, de plus voilà les droits pour les uploads :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ;;;;;;;;;;;;;;;;
    ; File Uploads ;
    ;;;;;;;;;;;;;;;;
     
    ; Whether to allow HTTP file uploads.
    file_uploads = On
     
    ; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    ;upload_tmp_dir = 
     
    ; Maximum allowed size for uploaded files.
    upload_max_filesize = 2M
    Sinon pour le time :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ;;;;;;;;;;;;;;;;;;;
    ; Resource Limits ;
    ;;;;;;;;;;;;;;;;;;;
     
    max_execution_time = 30     ; Maximum execution time of each script, in seconds
    max_input_time = 60	; Maximum amount of time each script may spend parsing request data
    memory_limit = 32M
    La franchement je vois pas quoi faire ??

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 28
    Par défaut Je devient fou
    Voilà, j'ai aussi essayé la fonction rename et copy,
    et celles ci non plus ne fonctionnent pas ? ETrange quand même.

    Toutes les fonction de copie ou de renommage de fichier ne fonctionnent pas et ne me retourne aucune erreur.

    Une idée?

    PS : le fichier tmp ou est stocké l'image est en 777 + sticky bit ( j'ai essayé sans et ca ne marche pas non plus ) de plus le fichier temporaire est bien préset et lui aussi possède tous les droits nécessaires.
    Je suis sous plesk ! Peut etre un probleme d'acces du à plesk ?

  5. #5
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par cyrilskof Voir le message
    Voilà, j'ai aussi essayé
    Bon alors entendons nous ... c'est provisoirement le répertoire ou tu veux qu'arrive l'image qui doit étre déprotégé et sans htaccess non plus !!

    Si c'est OK,
    crées deux PHP que voici écris leurs noms en minuscule
    prépares sur ton micro une image jpeg de 10Ko maxi ...

    upload_base_saisie.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <?PHP             
    if (isset($_GET["message"])) $message=trim($_GET["message"]);
        else $message="";
    if (isset($_GET["Limg"])) $Limg=trim($_GET["Limg"]);
        else $Limg="";
    ?>
    <html><body>
    <br /><br /><br />
    <p align=center>
    <?PHP
    echo ("".$message."<br />");
    if ($Limg!="") echo ("<img src='".$Limg."' alt='' ><br />");
    ?>
     
    <br /><br /><br />
    <form name="formulaire" method="POST"
     action="upload_base_upload.php"  enctype="multipart/form-data" >
     <input type="hidden" name="MAX_FILE_SIZE" value="40000" />
     <input id="fichier1"  name="fichier1" type="file"  /><br />
     <input value="Valider" name="submit" type="submit" />
    </form>
    </p>
    </body>
    </html>

    Puis upload_base_upload.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <?php
    if (isset($_FILES['fichier1'])) $LeFic=trim($_FILES['fichier1']['name']);
        else $LeFic="";
    $message="";
    if(  $LeFic!="" )
     {
     $poid_max="40000"; 
     $destin="0workdesti/"; 
     $taille = getimagesize($_FILES['fichier1']['tmp_name']);
     $poid = filesize($_FILES['fichier1']['tmp_name']); 
     $message="";
     
     if(substr($LeFic,-3) !="jpg")
       {$message="L image doit etre au format jpeg jpg";}
     if ($poid>$poid_max)
      {$message=" l image est trop lourde ... 40 Ko maxi";}
     if ($poid<=$poid_max && $message=="")
      {
       // === on supprime les accents et les espaces du nom de l'image 
       $LeFic = strtr($LeFic,  "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",   
        "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");  
       // === on supprime les espaces
       $LeFic=str_replace(" ","_",$LeFic);
       // === on met en minuscule
       $LeFic=strtolower($LeFic); 
       $newnom=$destin.$LeFic;
       if (file_exists($destin.$LeFic))
         {
            $message="L image est déjas sur le site web";
         }
         else
          {
          copy($_FILES['fichier1']['tmp_name'],$destin.$LeFic);
          $imagefile=$destin.$LeFic;
          $src_img = imagecreatefromjpeg($imagefile);
          $message="L image ".$newnom." est copiée";
         }
      }
     }
     
    $Limg=$imagefile;
    print "<script type='text/javascript'>window.location='upload_base_saisie.php?Limg=".$Limg."&message=".$message."'</script>";
    exit;
    ?>
    mets les dans la racine de ton site web
    mais avant dans
    upload_base_upload.php
    remplace
    $destin="0workdesti/"; PAR TON REPERTOIRE DESTINATION
    puis lance
    upload_base_saisie.php

    tiens moi au courant

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 28
    Par défaut Re,
    Déjà merci pour ta réponse,
    Je ne peux actuellement pas essayer ca immédiatement, je le ferai ce soir. En revanche, mon repertoire de destination est totalement déprotégé et sans htaccess. Je l'ai déjà vérifié. Le dossier dans lequele je souhaite envoyé la photo est en 755.

    J'aisseaireai ce que tu m'a conseillé ce soir mais je doute que cela fonctionne.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Upload] upload d'un fichier avec apostrophe
    Par SegmentationFault dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2006, 10h37
  2. [Upload] Upload de GROS fichiers en php
    Par osscour dans le forum Langage
    Réponses: 21
    Dernier message: 26/05/2006, 14h13
  3. [Upload] Upload d'un fichier excel sur un site web
    Par oldscrout dans le forum Langage
    Réponses: 3
    Dernier message: 31/03/2006, 10h09
  4. [Upload] Upload, renommer le fichier
    Par Alain15 dans le forum Langage
    Réponses: 15
    Dernier message: 14/02/2006, 14h06
  5. [Upload] Upload de gros fichiers
    Par Rémiz dans le forum Langage
    Réponses: 8
    Dernier message: 07/01/2006, 11h44

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