upload de fichier

Eléphant du PHP | 50 Messages

14 mai 2008, 11:53

salut la famille PHP,
J'ai un soucis d'upload de fichier sur mon serveur web.
session_start();
$titre=$_POST['titre'];
$domaine=$_SESSION['domaine'];
$date=date ("d/m/Y");
//upload de fichier
if (isset($_FILES['fich']))
{
  //param
  unset($erreur);
  $extensions_ok=array('png', 'gif', 'jpg', 'jpeg');
  $taille_max=2000000;
  $dest_dossier='/ed/designpages/propos/';
 //vérification
   if( !in_array( substr(strrchr($_FILES['fich']['name'], '.'), 1), $extensions_ok ) )
   {    $erreur = 'Veuillez selectionner un fichier de type png, gif ou jpg !';
       echo $erreur;    
   }  
   elseif( file_exists($_FILES['fich']['tmp_name'])
   and filesize($_FILES['fich']['tmp_name']) > $taille_max)  
   {    
   $erreur = 'Votre fichier doit faire moins de 2Mo !'; 
    echo $erreur; 
   }
   // copie du fichier
   if(!isset($erreur))  
   {    
   $dest_fichier = basename($_FILES['fich']['name']);
   // formatage nom fichier    
   // enlever les accents    
   $dest_fichier = strtr($dest_fichier,     
   'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',     
   'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');    
   // remplacer les caracteres autres que lettres, chiffres et point par _    
   $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);  
   // copie du fichier    
   move_uploaded_file($_FILES['fich']['tmp_name'], $dest_dossier . $dest_fichier);
   
   //INSERTION DANS LA BASE DE DONNEE DE LA PROPOSITION
         // connexion à la base de donnée
         include "../admin/db.php";
         $connexion = mysql_connect($adresse,$id,$pass)or die ('Error of connexion');
	     mysql_select_db($db)or die ('Selection de la base impossible');
		 // Insertion des éléments dans la base de donnée et redirection vers la page design
		 $requete ="INSERT INTO `propositions` ( `id` , `domaine` , `date` , `titre` , `image` ,`etat` )VALUES(NULL, '$domaine', '$date', '$titre', '$dest_fichier', 'ATTENTE')";
$result=mysql_query($requete)or die ('Erreur SQL !'.$requete.'<br />'.mysql_error());    
     header("location:../designpages/design.php?action=$domaine");
mysql_close();
   }
  } 
en local comme dossier de destination j'utilissais "../designpages/propositions et cela marche tres bien mais lorsque mon script est hébergé sur mon serveur web j'ai un message d'Erreur
Warning: move_uploaded_file(http/propos/gestion_projet_dev.jpg): failed to open stream: No such file or directory in /var/upload.php on line 37 Warning: move_uploaded_file(): Unable to move '/tmp/phpBdtUsu' to /designpages/propos/gestion_projet_dev.jpg' in /var/www/lhosts/progsuivi/designpages/upload.php on line 37 Warning: Cannot modify header information - headers already sent by (output started at /var/designpages/upload.php:37) in /var/upload.php on line 47 
J'ai d'abbord penser que cela était du à mon dossier de destination, donc j'ai utiliser un chemin complet avec www, mais j'ai toujours le meme soucis.
Modifié en dernier par fowndi le 27 oct. 2009, 16:06, modifié 1 fois.

Mammouth du PHP | 1668 Messages

14 mai 2008, 12:39

Regarde si tu peux écrire dans ce dossier (c'est le CHMOD)
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 50 Messages

14 mai 2008, 12:43

comment puis je vérifier l'écriture dans le dossier? et comment puis je corriger mon problème.

Eléphant du PHP | 74 Messages

14 mai 2008, 13:28

A priori le chemin vers le dossier "propos" n'est pas le bon.

essaye
$dest_dossier=dirname( __FILE__ ).'/propos/';

ou 

$dest_dossier='var/www/lhosts/progsuivi/designpages/propos/';

Les 2 sont identiques. Tu dois donc vérifier qu'il existe bien le dossier 'propos' dans le dossier'designpages' et accesoirement les restrictions comme l'a dit katagoto.

Eléphant du PHP | 50 Messages

14 mai 2008, 13:36

j'ai changer le CHMOD du dossier, garce à mon client FTP et je suis repasser à mon chemin relatifs "../designpages/".
j'avais aussi un problème de header que j'ai corriger en mettant mon inscription dans la base de donnée juste avant la copie du fichier, et juste après on a la redirection et cela fonctionne nickel.
:lol: . Merci à KATAGOTO et à Jerome