Rename PHP : No error

Résolu
Bonjour à tous,

Je suis sous Windows 7, avec WampServer 2.0i.

J'ai un problème avec le module d'upload de fichier.

Voici le code de mon formulaire :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Gestion des Logs Fortinet</title>
</head>

<body>
<form id="fichier" name="fichier" method="post" action="envoi.php" ENCTYPE="multipart/form-data" >
<div align="center">
    <INPUT type=hidden name=MAX_FILE_SIZE  VALUE=20480000>
    <br />
    <INPUT name="fichier" type=file id="fichier">
    <label></label>
    <p>
      <label>Date de la bascule (jj/mm/aaaa) :
      <input name="date" type="text" id="date" />
      </label>
      <br />
      <br />
      <INPUT type=submit name="upload" value="Envoyer">
      </p>
</div>
</form>
</body>
</html>


Et voici le code de l'upload :

<?php

# Variables de test
$_POST['date'] = "2010-05-04";

$date = $_POST['date'];

	#Upload et intégration du fichier
	$repertoireDestination = "logs/";
    $nomDestination        = "logs.txt";

    // Pour raison de sécurité nous ajouterons aux fichiers
    // portant une extension .php .php3, l'extension .txt
    if (mb_eregi(".php", $nomDestination))
	{
       $nomDestination .= ".txt";
    }
    
    if (is_uploaded_file($_FILES["fichier"]["tmp_name"])) {
		if (file_exists($repertoireDestination.$nomDestination))
			{
				rename($repertoireDestination.$nomDestination,$repertoireDestination."archive".date('dmYGi').".txt");
			}
			if (rename($_FILES["fichier"]["tmp_name"],
					   $repertoireDestination.$nomDestination)) {
				echo "Le fichier temporaire ".$_FILES["fichier"]["tmp_name"].
					 " a été déplacé vers ".$repertoireDestination.$nomDestination;
			} else {
				echo "Le déplacement du fichier temporaire a échoué".
					 " vérifiez l'existence du répertoire ".$repertoireDestination;
		   }          
		} else {
		   echo "Le fichier n'a pas été uploadé (trop gros ?)";
   }


J'ai une erreur dans le log de Apache :

[Mon May 10 15:55:57 2010] [error] [client 127.0.0.1] PHP Warning: rename(C:\\wamp\\tmp\\phpFBC7.tmp,logs/logs.txt) [<a href='function.rename'>function.rename</a>]: No error in D:\\logsfortinet\\envoi.php on line 25, referer: http://127.0.0.1/logs/index.html

De plus, dans le répertoire logs, j'obtiens un fichier appelé comme il faut (logs.txt), mais vide (0 Ko).

Pourriez-vous m'aider svp ?

Merci à tous

3 réponses

  1. Contributeur
    Bonjour,

    Dans tes formulaires HTML, met des guillemets pour toutes les valeurs non numériques de tes attributs.... Des fois tu en met, d'autre fois non.
    1. Merci pour ta réponse, mais non ce n'est pas ça le problème.
      1. Problème résolu :

        Remplacer rename par move_uploaded_file();

        Le nouveau code :

        <?php
        
        # Variables de test
        $_POST['date'] = "2010-05-04";
        
        $date = $_POST['date'];
        
        	#Upload et intégration du fichier
        	$repertoireDestination = "logs/";
            $nomDestination        = "logs.txt";
        
            // Pour raison de sécurité nous ajouterons aux fichiers
            // portant une extension .php .php3, l'extension .txt
            if (mb_eregi(".php", $nomDestination))
        	{
               $nomDestination .= ".txt";
            }
            
            if (is_uploaded_file($_FILES["fichier"]["tmp_name"])) {
        		if (file_exists($repertoireDestination.$nomDestination))
        			{
        				rename($repertoireDestination.$nomDestination,$repertoireDestination."archive".date('dmYGi').".txt");
        			}
        			if (move_uploaded_file($_FILES["fichier"]["tmp_name"],$repertoireDestination.$nomDestination)) {
        				echo "Le fichier temporaire ".$_FILES["fichier"]["tmp_name"].
        					 " a été déplacé vers ".$repertoireDestination.$nomDestination;
        			} else {
        				echo "Le déplacement du fichier temporaire a échoué".
        					 " vérifiez l'existence du répertoire ".$repertoireDestination;
        		   }          
        		} else {
        		   echo "Le fichier n'a pas été uploadé (trop gros ?)";
           }