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 :

Erreur 3 upload chez free >= 100ko


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut Erreur 3 upload chez free >= 100ko
    Salut à toutes et à tous


    Depuis un certain temps déjà je me suis créé un petit programme d'upload d'image que j'utilise sur un compte en .free.fr .

    Seulement voilà quelque-chose de bizarre se passe, il refuse systèmatiquement les images supérieures à environs 100Ko.

    Pourtant les valeurs PHPINFO() de post_max_filsize et upload_max_filesize sont belles et bien à 2MB.

    L'erreur renvoyée est systèmatiquement la même : 3

    Après des recherches je sais que c'est quand le transfert à été interrompu / le fichier est incomplet, seulement j'ai du mal à saisir pourquoi.


    De plus le pire c'est qu'il y a un moment ou il suffisait de rééssayer 3 fois et au bout de la troisième fois ça marchait 9 fois sur 10.


    Donc je dois avouer ne pas comprendre d'où ça peut venir.


    Voici le code du formulaire d'envoi :

    (Oui je sais manque un DOCTYPE correcte )

    Code html : 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
    <html>
    <head>
    <title>Uploader une image</title>
    </head>
    <body>
    <center>
    <br />
    <h1>Uploader une image</h1>
    <br />
    <center>
    <form method="post" enctype="multipart/form-data" action="submit_image.php" >
    <p>Image &agrave; uploader (taille max : 2MB) :</p>
    <p>
    <input type="file" name="upfile"  />
    </p>
    <p><label><input type="checkbox" name="thumb" value="1" />Redimmensionner l'image</label>
    <select name="resize" >
    <option value="100x75" >100x75</option>
    <option value="150x112" >150x112</option>
    <option value="200x150" selected="selected" >200x150</option>
    <option value="320x240" >320x240</option>
    <option value="640x480" >640x480</option>
    <option value="800x600" >800x600</option>
    </select>
    </p>
    <p><label><input type="checkbox" name="resize_perso" value="1" />Redimmensionnement personnalis&eacute; :</label><br /><label><input type="text" name="resize2" /> (tapez une valeur sous la forme "lxL")</label></p>
    <input type="submit" name="submit" value="Envoyer !" />
    </form>
    </center>
    </body>
    </html>


    Les champs "resize" c'est pour les miniatures (bah oui c'est un upload d'images).


    Voici le fichier qui réceptionne :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?php
     
    if(!empty($_FILES['upfile'])) {
    $disp="";
     //On simplifie le nom des variables $_FILES
        $tmp_name = $_FILES['upfile']['tmp_name'];
        $name = $_FILES['upfile']['name'];
        $size = $_FILES['upfile']['size'];
        $type = $_FILES['upfile']['type'];
      	$erreur = $_FILES['upfile']['error'];
     
      //On affiche les différentes variables
     
     
      if($erreur != 0) { 
        echo "Nom du fichier : ".$name;
      echo "<br>Taille du fichier : ".$size;
      echo "<br>Type de fichier : ".$type;
      echo "<br>Nom temporaire : ".$tmp_name;
      echo "<br />Erreur : ".$erreur."<br /><br />";
      exit; }
     
      //On crée une variable contenant le répertoire de destination
      $uploadpath="./";
      //On va vérifier que le fichier est une image :
    	//on récupère l'extension du fichier :
    	$reversed = strrev($name);
    	$ext_pos = strpos($reversed, ".");
    	//echo $ext_pos.'<br />';
    	$ext_pos = strlen($name)-$ext_pos;
    	$ext = substr($name,$ext_pos-1);
    	if(!eregi("image", $type) || ($ext != ".gif" && $ext != ".GIF" && $ext != ".jpeg" && $ext != ".JPEG" && $ext != ".JPG" && $ext != ".jpg" && $ext != ".png" && $ext != ".PNG"))
    	{
    		die("Error, type du fichier incorrect ou extension non support&eacute;e. <br /> Type du fichier : ".$type);
    	}
    /* Si un fichier du même nom existe déjà : */
    if(is_file($uploadpath.$name))
    {
    	echo 'file exists'.'<br />';
    	echo $ext.'<br />';
    	$name_boucle = substr($name, 0, $ext_pos-1);
    	echo $name_boucle.'<br />';
    	$i = 1;
    	// Alors on rajoute un chiffre à la fin du fichier, en vérifiant que nom+chiffre n'existe pas déjà...
    	while(is_file($uploadpath.$name))
    	{
    		$i++;
    		echo $i;
    		$name = $name_boucle."$i".$ext;
    		echo $name.'<br />';
    	}
    }
     
    echo $name.'<br />';
      //On déplace le fichier du dossier temporaire vers le dossier de destination
     
    	move_uploaded_file($tmp_name,$uploadpath.$name) or die('problème au déplacement du fichier depuis le répertoire temporaire vers le nouveau répertoire');
    	  $disp .= 'Url de l\'image : <input type="text" onclick="this.select()" value="http://web.pcinfo.free.fr/images/'.rawurlencode($name).'" />';
    echo disp;
    exit;
    }
    ?>


    J'ai mis le script jusqu'à la fin mais de toute façon ça ne dépasse pas la partie d'affichage des erreurs...


    Une idée ?



    Merci d'avance à toutes celles / tous ceux qui participeront

  2. #2
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    renome le fichier ou tu utilise move_uploaded_file() en .php3

    au dernieres nouvelles sur les serveur perso de free move_uploaded_file() n'est pas/mal supporte en php4
    42
    there is no place like 127.0.0.1
    Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
    var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonsoir,

    Citation Envoyé par chtipitou
    au dernieres nouvelles sur les serveur perso de free move_uploaded_file() n'est pas/mal supporte en php4
    Citation Envoyé par Troll
    J'ai mis le script jusqu'à la fin mais de toute façon ça ne dépasse pas la partie d'affichage des erreurs...


    Donc le problème vient pas de cette fonction...


    Je veux bien essayer de le renommer en .php3, mais ça m'étonnerait franchement que quoi que ce soit change...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bon, j'ai testé en .php3... comme prévu cela n'a rien changé

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Visiblement ce problème est insoluble

    J'appelle Free pour leur dire que leurs serveurs c'est de la meyrde ?

  6. #6
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    que veut tu dire par 'l erreur 3' quelle fonction retourne cette erreur ?
    42
    there is no place like 127.0.0.1
    Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
    var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par chtipitou Voir le message
    que veut tu dire par 'l erreur 3' quelle fonction retourne cette erreur ?
    La variable $_FILES['upfile']['error'] vaut 3

    Lors d'un upload la variable $_FILES['nomduchampsfichierduformulaire'] est sytèmatiquement crée ainsi que plusieurs clés dont "error" qui doit contenir 0 quand cela c'est bien passé.



    PS : Sous Opera 9.5 Windows chez moi il m'est impossible de répondre à un sujet sauf en faisant "citer", ça vient de moi ?
    Edit : ah, c'est corrigé

  8. #8
    Membre actif Avatar de BlackSmith
    Inscrit en
    Mars 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2008
    Messages : 181
    Points : 207
    Points
    207
    Par défaut
    Erreur 3 de l'upload : Fichier déjà existant

    Donc verifie si un fichier avec le même nom n'existe pas deja.

  9. #9
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    Citation Envoyé par BlackSmith Voir le message
    Erreur 3 de l'upload : Fichier déjà existant

    Donc verifie si un fichier avec le même nom n'existe pas deja.
    Error Messages Explained

    Since PHP 4.2.0, PHP returns an appropriate error code along with the file array. The error code can be found in the error segment of the file array that is created during the file upload by PHP. In other words, the error might be found in $_FILES['userfile']['error'].

    UPLOAD_ERR_OK

    Value: 0; There is no error, the file uploaded with success.
    UPLOAD_ERR_INI_SIZE

    Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.
    UPLOAD_ERR_FORM_SIZE

    Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.
    UPLOAD_ERR_PARTIAL

    Value: 3; The uploaded file was only partially uploaded.
    UPLOAD_ERR_NO_FILE

    Value: 4; No file was uploaded.
    UPLOAD_ERR_NO_TMP_DIR

    Value: 6; Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.
    UPLOAD_ERR_CANT_WRITE

    Value: 7; Failed to write file to disk. Introduced in PHP 5.1.0.
    UPLOAD_ERR_EXTENSION

    Value: 8; File upload stopped by extension. Introduced in PHP 5.2.0.
    erreur 3 est bien un souci de upload partiel
    42
    there is no place like 127.0.0.1
    Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
    var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Oui, ça ne peut pas être une erreur de fichier déjà existant pour 2 raisons :

    1° : mon script vérifie si le fichier existe déjà et change son nom le cas échéant.

    2° : ça le fait systèmatiquement pour les fichiers au-dessus de 100ko.



    Personne n'a d'idée visiblement ?

  11. #11
    Membre actif Avatar de BlackSmith
    Inscrit en
    Mars 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2008
    Messages : 181
    Points : 207
    Points
    207
    Par défaut
    verifier cette valeur upload_max_filesize dans le php info, car il se peut quel soit fixé à seulement 100ko

  12. #12
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    Apparament il utilise les serveur free mutualise, donc pas de modification de php.ini possible

    tu n'a aucun htaccess qui fais des choses originale ?
    42
    there is no place like 127.0.0.1
    Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
    var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonjour,


    Alors pour le phpinfo :

    Citation Envoyé par Troll
    Pourtant les valeurs PHPINFO() de post_max_filsize et upload_max_filesize sont belles et bien à 2MB.

    Pour le .htaccess, non je n'en ai pas car free n'accepte pas les .htaccess

Discussions similaires

  1. [JpGraph] Erreur d'affichage des polices true type chez free
    Par crazydiver_e2 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/04/2012, 13h48
  2. htaccess chez free (erreur 500)
    Par antoinev2 dans le forum Sécurité
    Réponses: 4
    Dernier message: 19/06/2010, 23h16
  3. [Cookies] Erreur cookie php milieu de page chez Free
    Par fabiofabio dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2008, 15h30
  4. [JpGraph] Erreur lors de la mise en place chez Free
    Par florent dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 01/01/2006, 17h11

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