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] move_uploaded_file impossible mais erreur=0


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut [Upload] move_uploaded_file impossible mais erreur=0
    Salut
    Je suis dans une grosse galère :
    J'upload un fichier (tout marche parfaitement en local) sur mon serveur de prod via un formulaire dans mon navigateur.

    Tout ce passe bien sauf que je n'arrive pas à faire de move_uploaded_file et que je n'ai aucune erreur.

    $_FILES['userfile']['error'] == 0
    pas d'erreur sur la fonction move_uploaded_file non plus, malgré un error_reporting(2047).

    Voici mon code :
    Code php : 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($_FILES['userfile'])){
    //---------------- Destination folder
    $uploaddir = $_SERVER['DOCUMENT_ROOT']."/images/newsletter/";
      //---------------- Checking types
      if($_FILES['userfile']['type'] == 'image/jpeg' || $_FILES['userfile']['type'] == 'image/png' || $_FILES['userfile']['type'] == 'image/gif'){
        $temp_file = $_FILES['userfile']['tmp_name'];
     
         if(move_uploaded_file($temp_file, $uploaddir.$_FILES['userfile']['name'])){
            //---------------- Creation of thumbs (GD)
            [...]
            $image = $_FILES['userfile']['name'];
          }
          else{
            $confirmation .= 'Impossible to move uploaded file<br />';
          }
        }
        else{
          $confirmation .= 'You can upload only JPG, GIF or PNG files.<br />';
        }
    }
    else{
      $image = '';
    }
    ?>
    Et j'ai bien un formulaire avec enctype="multipart/form-data"...
    C'est à vous rendre fou !!
    Si quelqu'un pouvait m'aider, ce serait grandiose !


  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    C'est vague
    Citation Envoyé par mathieugamin
    Tout ce passe bien sauf que je n'arrive pas à faire de move_uploaded_file et que je n'ai aucune erreur.
    Oui et qu'est-ce qui vous l'indique ? Que donne un var_dump($_FILES) ?

    N'y aurait-il pas un problème de chemin par la suite comme ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $image = $_FILES['userfile']['name'];
    Puisque l'image ne semble pas dans le répertoire courant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $uploaddir = $_SERVER['DOCUMENT_ROOT']."/images/newsletter/";
    Note : l'emploi des fonctions ereg* est, depuis un certain temps déjà, déconseillé ...

  3. #3
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Bonjour,
    Merci de votre réponse

    En fait, lorsque je fait un var_dump($_FILES) j'ai un code erreur 0... le fichier est bien celui téléchargé, la taille correspond bien à celle du fichier et je récupère bien un nom temporaire pour celui-ci.
    Voici ce que je récupère :
    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
    array(1) {
      ["userfile"]=>
      array(5) {
        ["name"]=>
        string(8) "kube.jpg"
        ["type"]=>
        string(10) "image/jpeg"
        ["tmp_name"]=>
        string(14) "/tmp/phpYJBj7T"
        ["error"]=>
        int(0)
        ["size"]=>
        int(148879)
      }
    }
    N'y aurait-il pas un problème de chemin par la suite comme ici :
    $image = $_FILES['userfile']['name'];
    Non, j'ai re-vérifié... Je garde ici la variable seulement pour insérer le nom dans ma base.

    Note : l'emploi des fonctions ereg* est, depuis un certain temps déjà, déconseillé ...
    Oui, c'est un vieux code, j'aurais dû faire attention... J'ai corrigé

    Est-ce que cela peut être dû à la configuration du serveur ?
    Il est géré par un service de ma boîte et ils ont la fâcheuse habitude de modifier des paramètres sans prévenir....

    Merci

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par mathieugamin
    Est-ce que cela peut être dû à la configuration du serveur ?
    Il est géré par un service de ma boîte et ils ont la fâcheuse habitude de modifier des paramètres sans prévenir....
    J'en doute car cela se verrait dans le tableau $_FILES. Vous pouvez toutefois le vérifier via un phpinfo (à placer/exécuter de préférence au même endroit que votre script).

    Pas de problème de droits sur le répertoire de destination ? Qu'est-ce qui vous fait dire que move_uploaded_file ne fonctionne pas ? Est-ce parce qu'il vous donne :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible to move uploaded file<br />
    (les erreurs sont bien affichées sur votre serveur ?)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 56
    Points : 54
    Points
    54
    Par défaut
    Bonjour


    Regarde si la fonction move_uploaded_file n'est pas interdite dans le parametrage de ton fichier php.ini ( disable_functions ="...liste des fonctions interdites..." )

    Cela expliquerai pourquoi ca marche sur le dev et pas sur la prod et pourquoi tu n'as pas de message d'erreur.

    Bon courage

  6. #6
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Pas de problème de droits sur le répertoire de destination ?
    C'est bien cela...

    Les droits ont été modifiés par l'équipe de choc dont j'ai parlé plus haut !

    Et dire qu'Internet est censé permettre une meilleure communication... C'est toujours le même problème, c'est l'individu qui est au départ de la communication...

    Merci Julp pour votre aide

    Bonne journée

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/03/2011, 16h18
  2. creation de synonym impossible mais pas de message d'erreur
    Par breizh76 dans le forum Administration
    Réponses: 1
    Dernier message: 03/11/2009, 14h53
  3. Recherche impossible mais enregistrement existant
    Par nicoalafac dans le forum Requêtes
    Réponses: 5
    Dernier message: 25/03/2006, 11h39
  4. Réponses: 3
    Dernier message: 24/03/2006, 20h46
  5. [Upload] move_uploaded_file et Free
    Par vichenze dans le forum Langage
    Réponses: 2
    Dernier message: 24/01/2006, 15h22

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