[RESOLU]Comportement Windows et Wamp pour move_uploaded_file

Eléphanteau du PHP | 41 Messages

20 oct. 2011, 16:41

Bonjour,

je suis repassée récemment au PC, avant j'étais sous mac pour le dev (il est toujours là pour le reste), je travaillais avec MAMP. Lorsque je voulais faire un téléchargement d'images à partir d'un formulaire un

$dest = $_SERVER["DOCUMENT_ROOT"]."mondossier";

et pas de soucis!!! Là c'est une autre paitre de manche! J'ai teste avec echo pour voir le comportement, ça semble pourtant pas mal car j'ai avec ce code

echo $_SERVER["DOCUMENT_ROOT"]."monsite/mondossier";

cette adresse :
C://WAMP/www/monsite/mondossier

RIEN! J'ai testé avec l'adresse directe, en mettant simplement $dest = "mondossier" (en plaçant mon dossier à la racine de mes fichiers), avec et sans /, What is the problem ?

Côté BDD pas de soucis. Ou est-ce le fait que je charge deux images dans un post, mais ça tient pas vu qu'ils ont deux noms différents.
Mon code :

$dest = $_SERVER["DOCUMENT_ROOT"]."img/actu/une/";
$dest2 = $_SERVER["DOCUMENT_ROOT"]."img/actu/";

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

	mysql_query("INSERT INTO test VALUES ('','','$titre','$actu','$img_art','$img_une')");
	
	$une = move_uploaded_file($_FILES['fichier']['tmp_name'], $dest.$img_une);
	$article = move_uploaded_file($_FILES['fichier2']['tmp_name'], $dest2.$img_art);
Merci pour votre aide :D
Modifié en dernier par Teenoo le 21 oct. 2011, 12:30, modifié 1 fois.

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

20 oct. 2011, 17:38

salut,

sous windows c'est des \ pas des / et surtout c:\répertoire et pas C:// ;)

bon après il me semble que \ ou / ne change pas grand chose !

tu peux utiliser pathinfo pour avoir le chemin de fichier et l'utiliser ensuite pour ton upload ;)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 41 Messages

20 oct. 2011, 22:16

Merci pour ta réponse, je me suis empressée de tester tout ça mais rien... J'ai du coup j'ai un mode debug pour un upload/2 et je me retrouve avec un Warning :
Warning: move_uploaded_file(C:/wamp/www/monsite/manager/img/actu/une/logo.png) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\wamp\www\monsite\manager\insert_actu.php on line 15

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\wamp\tmp\phpB96.tmp' to 'C:/wamp/www/monsite/manager/img/actu/une/logo.png' in C:\wamp\www\monsite\manager\insert_actu.php on line 15
J'ai vérifié mes droits d'écriture sur mon dossier... sont bons... Je sèche!

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

21 oct. 2011, 10:03

je suppose que le répertoire existe bien ? (ça arrive souvent ce genre d'oublis :) )

après C:/wamp/www/monsite/manager/img/actu/une/logo.png
=> C:\wamp\www\monsite\manager\img\actu\une\logo.png

donc un $une = move_uploaded_file($_FILES['fichier']['tmp_name'], 'C:\wamp\www\monsite\manager\img\actu\une\logo.png');
pour voir ce que ça donne

si ça fonctionne en dur c'est bien le / qui mettent le brin (c'est du win donc \ )
attention utilise des ' et pas des " sinon faut protéger les \ avec un autre \ (\\)

généralement les erreurs de ce type sont des problèmes de droit ou de répertoire / fichier qui n'existe pas

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 41 Messages

21 oct. 2011, 11:07

Ça pourrait le faire, mais je me heurte à un problème de taille, impossible de caser mon \ en fin d'adresse sinon c'est tout le script qui part en cacahuète. C'est pourtant ça qui me manque à présent...

Mammouth du PHP | 568 Messages

21 oct. 2011, 11:25

Ça pourrait le faire, mais je me heurte à un problème de taille, impossible de caser mon \ en fin d'adresse sinon c'est tout le script qui part en cacahuète. C'est pourtant ça qui me manque à présent...
Échappe le avec un \, ce qui doit te donner \\

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

21 oct. 2011, 11:26

ben \\
<?php
$a = 'une chaine correct avec \ à la fin \\';
$b = 'une chaine pas correct avec \ à la fin \';
echo 'autre chose';
?>
avec ça tu ne devrait plus avoir de soucis ;)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 41 Messages

21 oct. 2011, 12:29

Youhouuuuu! Ça marche \o/

Merci beaucoup pour vos précieux conseils :)