PHP ↔ UPLOAD ▲ script ne marc

Résolu/Fermé
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 - 30 sept. 2008 à 10:55
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 30 sept. 2008 à 11:53
Bonjour,
j'ai developpé un formulaire php qui marchais en local.
Il permetais a un membre d'envoyer des documents et des infos, aujourd"hui sur le serveur, le script ne marche plus.

J'ai bien une erreur (retourné par le script) mais je ne vois pas ce qu'il cloche :s le dossier destination est en chmod 777 pour mes test ..

Voici le code, et en gras l'erreur retourné :

<!--- 	SCRIPT D ENVOI DES INFORMATIONS ET DU FICHIER  ( UPLOAD) -->
<?php
if( isset($_POST['envoi']) )// si formulaire soumis
	{ 
	// enregistrement des dates d'édition des documents

	if(isset($_POST['docdate']))      
	$docdate=$_POST['docdate'];
	else $docdate="";
	
	// conversion du format de date jj-mm-aaaa en aaaa-mm-jj pour le stockage dans la base de données au format date
	function dateFRenMySQL ($jour) //$jour au format JJ-MM-AAAA
	{return substr($jour,6,4).substr($jour,3,2).substr($jour,0,2);} //renvoie la date au format AAAA-MM-JJ
	$docdate= dateFRenMySQL ($docdate);

	//  definir les variables en fonction des données saisi dans les champs
	if(isset($_POST['type']))      
	$type=$_POST['type'];
	else $type="";

	if (isset($_POST['titre']) )
		{
		$titre=$_POST['titre'];
		$titre=addslashes($titre);
		}
	else $titre="";

	if (isset($_POST['description']) )
		{	
		$description=$_POST['description'];
		$description=addslashes($description);
		}
	else $description="";

	if (isset($_POST['langue']) )
	$langue=$_POST['langue'];
	else $langue="";
	$langue = str_replace ( 'ç' , 'c' , $langue); 
			
	if (isset($_POST['mot_clef']) )
			{
			$mot_clef=$_POST['mot_clef'];
			$mot_clef=addslashes($mot_clef);
			}
	else $mot_clef="";

	// On vérifie si les champs sont vides 
	if(empty($type) OR empty($docdate) OR empty($titre) OR empty($description) OR empty($langue) OR empty($mot_clef)) 
    { 
		echo "<script>alert('Merci de remplir tout les champs.');</script>"; 
	} 
	else
	{									                // dossier où sera déplacé le fichier
		$content_dir = '/var/www/repertoire'; // la partie "repertoir/" est à modifier en fonction des répertoires ou seront placer les fichiers
		$tmp_file = $_FILES['fichier']['tmp_name'];
		
		if( !is_uploaded_file($tmp_file) )
		{
	       exit("Le fichier est introuvable");
		}
		// infos sur le fichier
		$nom = $_FILES['fichier']['name'];   	 // nom complet du fichier: "fichier.doc"
		$type_file = $_FILES['fichier']['type']; // application associé.    : "application/msword"
		$extension = strstr($_FILES['fichier']['name'], '.'); 
		$extension = str_replace ( '.' , '' , $extension);// extension du fichier: "doc" 
		
		// On autorise uniquement l'upload des fichiers portant l'une des extensuions suivante :
	   if ($extension != 'doc' && 
	       $extension !='docx' && 
		   $extension != 'xls' && 
		   $extension != 'txt' &&
		   $extension != 'rtf' && 
		   $extension != 'pdf' && 
		   $extension != 'ppt' &&
		   $extension != 'gif' && 
		   $extension != 'jpg' &&
		   $extension != 'jpeg' && 		   
		   $extension != 'png')
	   
	   {	 
		echo "<script>alert('Ce fichier type de fichier n\'est pas autorisé.');</script>"; 	   
	    exit;
	   }
	   	   else
	   {
			if( !move_uploaded_file($tmp_file, $content_dir . $nom) )
			{
			echo "<script>alert('Impossible de copier le fichier. Veuillez nous contacter.');</script>"; 	   
			exit;
			}
			// si l'upload c'est bien passé, on réalise la mise a jour des infos dans la base
			else
			{
				include 'toto.php';    //les variables de connexion host user passwd et bdd sont sur une autre page	 	
											// Connexion au serveur et à la base de données
				mysql_connect($host, $usrr,$pass) or die("erreur de connexion au serveur");
				mysql_select_db($bd) or die("erreur de connexion a la base de donnees"); 
 
				// on insert les données
				$sql1 ="INSERT INTO $temp ( `type` , `titre` , `description` , `nom_fichier` , `langue` , `format` , `mots_clefs` , `docdate`) 
									VALUES('$type', '$titre', '$description', '$nom', '$langue', '$extension', '$mot_clef','$docdate')";
		
				mysql_query($sql1) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
			
				echo "<script>alert('Formulaire envoyé, merci. ');</script>"; 
				// On se déconnecte de MySQL
				mysql_close();
			}	
		}
	}	
}
?>


Quelles conditions peuvent faire que l'upload ne soit pas valide ?
Merci de votre aide.
A voir également:

4 réponses

arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
30 sept. 2008 à 11:02
Bonjour,

Tu es sûr que ton répertoire /var/www/repertoire est en 777 ?

Par contre autre question est-ce que l'utilisateur qui lance ton serveur web a accès à ce répertoire?
1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
30 sept. 2008 à 11:05
salut oui je suis certains qu'il est en 777, j'ai verifier sous filezilla puis forcer en ligne de commande le chmod au cas ou...

Non il ne devra avoir acces qu'en ecriture.
Le repertoire lui sera invisible, la seul chose qu'il est censé faire, c'est envoyer des documents via un formulaire.
1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
30 sept. 2008 à 11:18
Après je ne sais combien de temps de recherche, j'ai enfin trouver : oufff


$content_dir = '/var/www/repertoire/'; un slash manquant !!! agrrr

Merci.

Pour info, dans le script ci dessus il y a une fonction de conversion de date, format anglais, un script d'upload, et de mise a jour d'info d'une base de donée....

Il est complet si vous voulez l'utiliser !! (manque juste un slash a la fin du repertoire d'upload)
1
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
30 sept. 2008 à 11:53
Pourquoi pas oui il pourrait m'être utile mais bon copyright oblige alors non ;)

Je comptais me pencher sur le jsp pour faire ça.
1