par
fowndi » 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.
salut la famille PHP,
J'ai un soucis d'upload de fichier sur mon serveur web.
[php]
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();
}
}
[/php]
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
[php]
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
[/php]
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.