Problème avec move_uploaded_file()
Résolu/Fermé
rskas
-
24 août 2011 à 15:22
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 27 août 2011 à 11:51
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 27 août 2011 à 11:51
A voir également:
- Move_uploaded_file() unable to move
- Qwerty to azerty - Guide
- Mouse move - Télécharger - Utilitaires
- .Mov to avi - Télécharger - Conversion & Codecs
- 1 to ✓ - Forum Windows
- Unable to open connection to com1 putty ✓ - Forum Réseau
15 réponses
1 - le script n'a jamais été 'owned'. C'est le dossier '/' qui l'était
le deuxième paramètre de move_uploaded_file ( $_FILES['fichier']['tmp_name'] , "$dossier" );, c'est à dire $dossier, c'est lui qui contient ../blend/455b7288c8d9c2d12e7432d2d481138b.blend ?
D'après le message d'erreur, comme d'après le nom de la variable, ce serait un nom de dossier, alors qu'il faut indiquer un nom de fichier.
le deuxième paramètre de move_uploaded_file ( $_FILES['fichier']['tmp_name'] , "$dossier" );, c'est à dire $dossier, c'est lui qui contient ../blend/455b7288c8d9c2d12e7432d2d481138b.blend ?
D'après le message d'erreur, comme d'après le nom de la variable, ce serait un nom de dossier, alors qu'il faut indiquer un nom de fichier.
MastercroW
Messages postés
1094
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
31 mai 2019
163
24 août 2011 à 15:25
24 août 2011 à 15:25
Désolé de te réponse par une question mais lorsque tu as testé tu étais en LOCALHOST ou sur un hébergeur ?
MastercroW
Messages postés
1094
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
31 mai 2019
163
24 août 2011 à 15:26
24 août 2011 à 15:26
Je n'ai rien dis, sinon peut être il faut que ta page soit en 777. (Peut être)
Je teste les script directement sur la toile, le fichier est en permission 777...
Edit : je m'étais trompé dans l'arborescence /blend/ devient ../blend/ ^^, maintenant le script ne fait plus d'erreur mais il n'y as aucun enregistrement dans BDD et le fichier n'est toujours pas uploadé...
Edit : je m'étais trompé dans l'arborescence /blend/ devient ../blend/ ^^, maintenant le script ne fait plus d'erreur mais il n'y as aucun enregistrement dans BDD et le fichier n'est toujours pas uploadé...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
MastercroW
Messages postés
1094
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
31 mai 2019
163
24 août 2011 à 15:33
24 août 2011 à 15:33
Je pense que ta réponse est ici :
https://openclassrooms.com/forum/sujet/la-fonction-moveuploadedfile-50709
https://openclassrooms.com/forum/sujet/la-fonction-moveuploadedfile-50709
En fait j'ai essayé avec des scripts proposés sur les respectables Site du Zéro, php.net, phpfrance et bien d'autres... Je suis au bord du "sutdown -s -t 0"
J'ai vérifié la configuration du serveur et l'upload est bien activé...
J'ai vérifié la configuration du serveur et l'upload est bien activé...
graffx
Messages postés
6506
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
24 mars 2019
1 975
24 août 2011 à 15:52
24 août 2011 à 15:52
question bete, elle existe bien cette page sur ton serveur?
upload_confirmation.php
upload_confirmation.php
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
25 août 2011 à 09:16
25 août 2011 à 09:16
Salut
$nom = "blend/{$cle}.blend";
comment se situe le répertoire blend par rapport a ton script php dans ton arborescence ?
tel que tu as fait le chemin cela veut dire que le répertoire blend est un sous répertoire du rep contenant ton script
raisonne en relatif par rapport au repertoire dans lequel est ton script upload_confirmation.php, il faut peut être faire ../blend/{$cle}.blend pour remonter.
au besoin donnes moi le bout d'arborescence concernée
$nom = "blend/{$cle}.blend";
comment se situe le répertoire blend par rapport a ton script php dans ton arborescence ?
tel que tu as fait le chemin cela veut dire que le répertoire blend est un sous répertoire du rep contenant ton script
raisonne en relatif par rapport au repertoire dans lequel est ton script upload_confirmation.php, il faut peut être faire ../blend/{$cle}.blend pour remonter.
au besoin donnes moi le bout d'arborescence concernée
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
25 août 2011 à 13:12
25 août 2011 à 13:12
mets des traces pour voir:
ensuite est ce que chez ton hébergeur le dossier temp (ou tmp) existe, chez certains il faut le créer ?
<?php include ("../sql/1.php"); $cle = md5(uniqid(rand(), true)); $nom = "../blend/{$cle}.blend"; echo 'Chemin fichier destination: '.$nom; echo '<br />'; echo 'Nom fichier temporaire: '.$_FILES['tmp_name']; $resultat = move_uploaded_file($_FILES['tmp_name'],$nom); if($resultat) {echo 'le fichier a bien ete transfere de temp vers dest';}
ensuite est ce que chez ton hébergeur le dossier temp (ou tmp) existe, chez certains il faut le créer ?
Bonjour
Dans ton formulaire, tu as deux champ fichier, avec pour noms "icone" et "fichier".
Leurs noms temporaires ne sont pas $_FILES['tmp_name'], mais $_FILES['icone']['tmp_name'] et $_FILES['fichier']['tmp_name']
Il faut donc mettre ces noms là dans tes move_uploaded_file.
Enregistrer $_POST['icone'] et $_POST['fichier'] dans la base ne sert à rien. Il faut enregistrer les fichiers comme tu le fais avec move_uploaded_file. Ensuite, il n'y a plus qu'à mettre les noms des fichiers dans la base pour pouvoir les retrouver plus tard.
Dans ton formulaire, tu as deux champ fichier, avec pour noms "icone" et "fichier".
Leurs noms temporaires ne sont pas $_FILES['tmp_name'], mais $_FILES['icone']['tmp_name'] et $_FILES['fichier']['tmp_name']
Il faut donc mettre ces noms là dans tes move_uploaded_file.
Enregistrer $_POST['icone'] et $_POST['fichier'] dans la base ne sert à rien. Il faut enregistrer les fichiers comme tu le fais avec move_uploaded_file. Ensuite, il n'y a plus qu'à mettre les noms des fichiers dans la base pour pouvoir les retrouver plus tard.
Merci mon père, tout semble se passer comme il faut, MAIS !, parce qu'il y a un mais, une nouvelle erreur apparaît :
Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid is 2935 is not allowed to access / owned by uid 0 in /var/www/*****.com/htdocs/upload/upload_confirmation.php on line 22
Touts les dossiers ont une permission 777...
Erf....
Je suis comme mon script : OWNED
Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid is 2935 is not allowed to access / owned by uid 0 in /var/www/*****.com/htdocs/upload/upload_confirmation.php on line 22
Touts les dossiers ont une permission 777...
Erf....
Je suis comme mon script : OWNED
D'après ton message d'erreur, tu essayes d'accéder à la racine du système de fichiers, normal qu'il refuse. Fais un echo du nom du fichier de destination juste avant le move_uploaded_file() de la ligne 22
../blend/455b7288c8d9c2d12e7432d2d481138b.blend
Et le script est plus 'owned'
mais les erreurs :
Warning: move_uploaded_file(../blend/) [function.move-uploaded-file]: failed to open stream: Is a directory in /var/www/*****.com/htdocs/upload/upload_confirmation.php on line 24
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/var/www/*****.com/phptmp/phpvEyuaz' to '../blend/' in /var/www/rskas.com/htdocs/upload/upload_confirmation.php on line 24
et les lignes concernées :
Je pense avoir fait une faute de noob, mais je vois rien...
mais les erreurs :
Warning: move_uploaded_file(../blend/) [function.move-uploaded-file]: failed to open stream: Is a directory in /var/www/*****.com/htdocs/upload/upload_confirmation.php on line 24
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/var/www/*****.com/phptmp/phpvEyuaz' to '../blend/' in /var/www/rskas.com/htdocs/upload/upload_confirmation.php on line 24
et les lignes concernées :
move_uploaded_file ( $_FILES['fichier']['tmp_name'] , "$dossier" );
Je pense avoir fait une faute de noob, mais je vois rien...
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 27/08/2011 à 11:51
Modifié par Alain_42 le 27/08/2011 à 11:51
salut,
move_uploaded_file ( $_FILES['fichier']['tmp_name'] , "$dossier" );
plus haut dans ton script tu avait $nom comme destination, et pas $dossier
et enlèves les "
move_uploaded_file ( $_FILES['fichier']['tmp_name'] , "$dossier" );
plus haut dans ton script tu avait $nom comme destination, et pas $dossier
et enlèves les "
move_uploaded_file ( $_FILES['fichier']['tmp_name'] , $nom );
25 août 2011 à 23:25