Les Allergies
Alimentaires
Posez votre question Signaler

Php upload sous linux [Résolu]

spacm 134Messages postés 1 juin 2007Date d'inscription 28 juillet 2011Dernière intervention - Dernière réponse le 13 déc. 2008 à 10:51
Bonjour,
Je cherche à utiliser les fonctions d'upload en php (avec apache 2 sous debian lenny), et j'ai donc voulu fair eun test avec le script joint ci-dessous. Je n'obtiens aucun message d'erreur, la variable $_FILES se remplis correctement, avec un code erreur 0: (pas d'erreur)
Cependant, pas moyen de mettre la main sur ce soi-disant fichier uploadé.
Pour info: j'ai la main sur le serveur, upload_tmp_dir est indéfini, mais j'ai fait d'autres essais en lui donnant une valeur.
1) si vous savez ou se trouve l'upload dir par défaut
2) Si quelqu'un a une idée de piste à explorer
Je l'en remercie d'avance.
Comme vous pouvez le constater, certaines parties sont commentées (je ne cherche pa sencore à déplacer ou renommer le fichier reçu)
la fonction message fait juste un affichage un peu plus élaboré que echo().
<?php  ?>
<head>
<title>
test upload
</title>
<link rel="Stylesheet" href="../css/styles_globaux.css" type="text/css" />
</head>
<body>


<?php
//config
    include '../config.php';

// inclusion de bibliothèques
  for($i=0;$i<count($dConfig['includes']);$i++){
    include("../".$dConfig['includes'][$i]);
    echo $dConfig['includes'][$i];
  }//for

?>
/****form_upload******/


<form method="post" enctype="multipart/form-data" action="test_upload.php">
<p>
<input type="file" name="fichier" size="30">
<input type="submit" name="upload" value="Envoyer">
</p>
</form>

/***** reponse_upload ********/</br>

<?php

if ( isset($_POST['upload']) ) // si formulaire soumis
{
	message(print_r($_FILES));
   $content_dir = 'upload/'; // dossier où sera déplacé le fichier

   $tmp_file = $_FILES['fichier']['tmp_name'];  
    
	message('Contenu $_FILES[\'fichier\'][\'tmp_name\']:'.$_FILES['fichier']['tmp_name']);
	
    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier n'a pas été uploadé");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'csv') )
    {
        exit("Le format attendu est un csv");
    }

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

   // if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
   // {
   //     exit("Impossible de copier le fichier dans $content_dir");
   // }

    echo "Le fichier a bien été uploadé";
}

?>

</body>

et ce qui m'est renvoyé par le navigateur:
include/bd.incfonctions.php/****form_upload******/
ici affichage du form d'upload
/***** reponse_upload ********/
Array ( [fichier] => Array ( [name] => 243_liste_usagers_Athis Mons__2008_12_02__11.38.csv [type] => text/csv [tmp_name] => /tmp/phpfOSfng [error] => 0 [size] => 126340 ) )

1

Contenu $_FILES['fichier']['tmp_name']:/tmp/phpfOSfng
Le fichier a bien été uploadé
Lire la suite 

Php upload sous linux »

3 réponses
Réponse
+0
moins plus
pas encore bien compris, mais a priori, il y a bien de l'upload qui s'effectue...
Je ne sais pas où va le fichier temporaire (ça m'intéresse, d'ailleurs, si quelqu'un a une idée, sachan que mon php.ini est celui par défaut sur debian lenny); cependant, je peux accéder au fichier uploadé...
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir,

Contenu $_FILES['fichier']['tmp_name']:/tmp/phpfOSfng



ça vaut dire que ton fichier est temporairement uploadé dans le rep /tmp sou sle nom php.......


mais d'une part tu fait move_uploaded_file donc il est transféré en changeant de nom et de plus il est killé automatiquement à la fin du script php
Ajouter un commentaire
Réponse
+0
moins plus
Merci d'avoir répondu.

Entre temps, j'avais "passé" l'obstacle, sans toutefois comprendre. Je crois que ça y est :)
Ajouter un commentaire
Ce document intitulé « php upload sous linux » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?