Partage
  • Partager sur Facebook
  • Partager sur Twitter

$_FILES['monfichier']['error'] = 7

upload de fichier fonctionne en local pas sur le serveur

    21 novembre 2013 à 13:28:46

    Bonjour,

    J'ai un petit soucis avec un script tout bête d'upload de fichier en php qui marche en local mais pas sur le serveur.
    à savoir que je ne suis pas administrateur du serveur en question.

    la variable $_FILES['monfichier']['error'] est égale à 7.
    Ce qui voudrais dire :
    "UPLOAD_ERR_CANT_WRITE échec de l'écriture du fichier sur le disque "
    Mais je ne suis pas bien avancé avec cette explication

    Les autorisations du dossier sont 777

    Voici le code en question qui bloque au premier if :

    // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
    if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
    {
    	echo '1';
            // Testons si le fichier n'est pas trop gros
            if ($_FILES['monfichier']['size'] <= 1000000)
            {
    			echo '2';
                    // Testons si l'extension est autorisée
                    $infosfichier = pathinfo($_FILES['monfichier']['name']);
                    $extension_upload = $infosfichier['extension'];
                    $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                    if (in_array($extension_upload, $extensions_autorisees))
                    {
                            // On peut valider le fichier et le stocker définitivement
                            move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . basename($_FILES['monfichier']['name']));
                            echo "L'envoi a bien été effectué !";
                    }
            }
    }else{
    	echo '<br>';
    	echo $_FILES['monfichier']['error'];	
    }

    Est-ce que quelqu'un à une idée de quel est le problème ?
    Sachant qu'il est un peu intermitant (parfois l'upload fonctionne, parfois non)

    Un grand merci d'avance à ceux qui prendront le temps de me répondre.

    • Partager sur Facebook
    • Partager sur Twitter
      21 novembre 2013 à 14:54:02

      Salut,

      Voici une liste de solution possible pour résoudre ton problème :

      - vérifier les droits du dossier d'upload

      - vérifier les droits du dossier temporaire de php (ce dossier est définie par la directive upload_tmp_dir)

      - vérifier les directives de configuration php concernant l'upload : file_uploads, post_max_size, upload_max_filesize

      - vérifier que la directive open_basedir est commenté ou que l'arborescence définie contient le dossier d'upload

      - vérifier l'espace disque disponible (pour le dossier d'upload et le dossier temporaire si ils ne sont pas sur la même partition)

      Si l'upload fonctionne avec des petits fichiers mais pas avec des gros fichiers, cela peut également venir de :

      - les limites des directives post_max_size et upload_max_filesize

      - les limites de mémoire et/ou de temps d'exécution du script définies par les directives memory_limit et max-execution-time

      - une limite fixé par ton hébergeur


      Bon courage

      • Partager sur Facebook
      • Partager sur Twitter
        21 novembre 2013 à 15:51:17

        OUCH !
        Merci pour ces pistes,

        Le problème c'est qu'à part pour la première piste (et l'autorisation est bien à 777).
        Je devrais avoir besoin d'être l'administrateur du serveur pour pouvoir accéder à ces informations (notamment pour accéder à php.ini)
        Ce qui n'est malheureusement pas le cas.

        Ce qui est vraiment étrange c'est que l'upload fonctionne ou ne fonctionne pas non pas en fonction du poids ou du fichier
        (le même fichier peut parfois passer ou ne pas passer) mais d'un moment à l'autre.

        Enfin sans être l'administrateur du serveur je crois que je suis dans l'impasse.

        • Partager sur Facebook
        • Partager sur Twitter

        $_FILES['monfichier']['error'] = 7

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown