Envoie d'images impossible

Eléphanteau du PHP | 41 Messages

16 mars 2012, 12:29

J'ai beau retourner le problème dans tous les sens, évidemment "avant" ça marchait, alors pourquoi aujourd'hui ce n'est plus le cas ? J'ai deux images à uploader, parfois 1/2. Ça rentre dans la BDD mais ça veut pas s'uploader dans le dossier en CHMOD 777... Ça pêche là et j'arrive pas à voir l'erreur
	$taille1 = $_FILES['fichier']['tmp_name'];
	$taille2 = $_FILES['fichier2']['tmp_name'];

$img_une=$_FILES['fichier']['name'];
	$img_art=$_FILES['fichier2']['name'];

if (!empty($img_une)) {
	if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $img_une))
		{
			exit("Nom de fichier non valide");
		}
			else if(!move_uploaded_file($taille1, $dest . $img_une))
		{
			exit("Impossible de copier le fichier1 dans $dest");
		}
		}
		
	if (!empty($img_art)) {
	if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $img_art))
		{
			exit("Nom de fichier non valide");
		}
			else if(!move_uploaded_file($taille2, $dest . $img_art))
		{
			exit("Impossible de copier le fichier2 dans $dest");
		}
}
A savoir que j'obtiens "Impossible de copier le fichier1 dans /dossier/ , avec la bonne adresse. Quoi faire ? :|

Merci pour votre aide :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 mars 2012, 12:06

Si le message t'indique que $dest a pour valeur "/dossier/", c'est que php essaye d'écrire dans le répertoire "dossier/" qui se trouve à la racine "/...." du disque dur (et pas du site, move_upload_file exploite le système de fichier, pas les url)

Il faut donc qu'à la racine de ton disque dur (par exemple : "C:\" si tu es sous windows ou "/" si tu es sous unix), se trouve un dossier nommé "dossier" avec les permissions nécessaires.

En règle générale, il vaut mieux utiliser un chemin relatif qui indique ou copier les fichiers par rapport à l'emplacement du script qui s'exécute, plutôt qu'un chemin global qui peut dépendre de la configuration du serveur :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...