IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Warning: move_uploaded_file [function.move-uploaded-file]:


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Points : 85
    Points
    85
    Par défaut Warning: move_uploaded_file [function.move-uploaded-file]:
    Bonjour a tous,

    j'essaye de gerer des telechargements ascendants en php. et pour ce faire, j'ai cree dans D:/wamp un dossier uploads (D:\wamp\uploads) et j'ai aussi un fichier tmp(D:\wamp\tmp).

    je teste donc le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <html>
    	<head>
    	<title> Download a file </title>
    	<style type="text/css" title="text/css" media="all">
    	.error {
    		fon-weight: bold;
    		color: #C00
    		}
    	</style>
    	</head>
    	<body>
    	<?php
     
    	if (isset ($_POST['submitted'])){
    		if (isset ($_FILES['upload'])){
    			$allowed = array('image/pjpeg', 'image/jpeg', 'image/jpg','image/JPG', 'image/X-PNG', 'image/PNG','image/png', 'image/x-png');
     
    			if (in_array($_FILES['upload']['type'], $allowed)){
    				if (move_uploaded_file($_FILES['upload']['tmp_name'], "../uploads/{$_FILES['upload']['name']}")){
    					echo '<p><em>The file has been uploaded !</em></p>';
    				}
    			} else {
    				echo '<p class="error"> Please Upload a JPEG, GIF, or PNG GIF image.</p>';
    			}
    		}
    	if ($_FILES['upload']['error'] > 0) {
    		echo '<p class="error">The file could not be uploaded because: <strong>';
     
     
    		switch ($_FILES['upload']['error']) {
    			case 1:
    				print 'The file exceeds the upload_max_filesize setting in php.ini.';
    				break;
    			case 2:
    				print 'The file exceeds the MAX_FILE_SIZE setting in the HTML form.';
    				break;
    			case 3:
    				print 'The file was only partially uploaded.';
    				break;
    			case 4:
    				print 'No file was uploaded.';
    				break;
    			case 6:
    				print 'No temporary folder was available.';
    				break;
    			case 7:
    				print 'Unable to write to the disk.';
    				break;
    			case 8:
    				print 'File upload stopped.';
    				break;
    			default:
    				print 'A system error occurred.';
    				break;
    		}
     
    		print '</strong></p>';
    	}
     
     
    	if (file_exists ($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name']) ) {
    		unlink ($_FILES['upload']['tmp_name']);
    	}
     
    	}
    ?>
     
    <form enctype="multipart/form-data" action="upload_image.php" method="post">
     
    	<input type="hidden" name="MAX_FILE_SIZE" value="524288">
     
    	<fieldset><legend>Select a JPEG or PNG image of 512KB or smaller to be uploaded:</legend>
     
    	<p><b>File:</b> <input type="file" name="upload" /></p>
     
    	</fieldset>
    	<div align="center"><input type="submit" name="submit" value="Submit" /></div>
    	<input type="hidden" name="submitted" value="TRUE" />
    </form>
    </body>
    </html>
    mais quand je teste voila ce que j'obtiens comme erreur:

    Warning: move_uploaded_file(../uploads/Picture1.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in D:\wamp\www\PHP-TESTS\upload_image.php on line 19

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'D:\wamp\tmp\php499.tmp' to '../uploads/Picture1.jpg' in D:\wamp\www\PHP-TESTS\upload_image.php on line 19
    la ligne 19 est la suivante:
    if (move_uploaded_file($_FILES['upload']['tmp_name'], "../uploads/{$_FILES['upload']['name']}")){

    SVP, pouvez vous me dire ou ai je commis mon erreur?
    je me suis dit que c'est peut etre le chemin de destination qui pose problems et j'ai verifie que on pouvait y ecrire.
    je me suis aussi demande si j'ai bien donne mon chemin relatif.

    Merci d'avance.
    Billyrose

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    salut,

    crée plutôt ton dossier upload dans D:\wamp\www\uploads\
    change ton code en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (move_uploaded_file($_FILES['upload']['tmp_name'], "/uploads/{$_FILES['upload']['name']}")){

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par thes32 Voir le message
    salut,

    crée plutôt ton dossier upload dans D:\wamp\www\uploads\
    change ton code en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (move_uploaded_file($_FILES['upload']['tmp_name'], "/uploads/{$_FILES['upload']['name']}")){
    En changeant le repertoire du dossier uploads et en le placant dans www, on pourra acceder a mon dossier a travers le navigateur. ca ne poserait pas un probleme de securite?

    Merci

  4. #4
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    ca ne poserait pas un probleme de securite?
    Oui, généralement les .htaccess peuvent résoudre ce problèmes ou encore en ajoutant un fichier index.php dans le dossier qui pourrait directement rédiriger vers une page du site.

    sinon tu le places hors de www, précises le chemin en entier,

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (move_uploaded_file($_FILES['upload']['tmp_name'], ".D:\wamp\uploads\{$_FILES['upload']['name']}"))

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 252
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par thes32 Voir le message
    Oui, généralement les .htaccess peuvent résoudre ce problèmes ou encore en ajoutant un fichier index.php dans le dossier qui pourrait directement rédiriger vers une page du site.

    sinon tu le places hors de www, précises le chemin en entier,

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (move_uploaded_file($_FILES['upload']['tmp_name'], ".D:\wamp\uploads\{$_FILES['upload']['name']}"))
    je sais pas utiliser les .htaccess c'est pourkoi j'ai pense a le creer en dehors du dossier www. au lieu d'ecrire le chemin absolu D:\wamp\uploads\{$_FILES['upload']['name'] comment pourrais je donner un chemin relatif.

    Merci de repondre a mes questions

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 214
    Points : 169
    Points
    169
    Par défaut
    d'abord je répondre à ta question,
    Citation Envoyé par billyrose Voir le message
    je sais pas utiliser les .htaccess c'est pourquoi j'ai pense a le créer en dehors du dossier www. au lieu d'écrire le chemin absolu D:\wamp\uploads\{$_FILES['upload']['name'] comment pourrais je donner un chemin relatif.

    Merci de repondre a mes questions
    Pour le htaccess tu peux allez voir il faut utiliser une combinaison de règle d'accès au répertoire, et un mot de passe crypter par md5 par exemple (user:mdpcrypterblablabla) enfin quelque chose comme sa...
    Pour le chemin relatif je pense pas qu'il soit possible étant donné que tu sort de l'espace dit 'web' sinon une autre solution un index.php ou index.html vide ou avec une redirection dans ton répertoire d'upload devrais évider de pouvoir parcourir le répertoire depuis un navigateur enfin il me semble.


    Sinon, j'ai le même problème avec apache 2.2, et php 5 toujours sous windows, je précise que lors de mais installation précédente ce problème n'existais pas personnellement j'ai fais un Vhost, lors de l'upload le fichier va dans le répertoire par défaut puis au moment décisif lorsqu'il doit allez dans le répertoire de mon site j'ai le même message ...

    si vous avez des question sur le code n'hésiter pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    function uploadmedia($inputName)
    {
    	$image     = $_FILES[$inputName];
    	// if a file is given
    	if (trim($image['tmp_name']) != '')
    	{
    		$tmp_name = $image['tmp_name'];
    		$name = $image["name"];
    		$tabname = explode('.', $name );
    		//sans l'extention pour le stockage, sa marche
    		$Nom_med = $tabname[0];
    		$ext = $tabname[1]; //$extensions[$image['type']];
    
    		//récupération de la taille en ko sa marhce
    		$size = $image["size"];
    		$Taille_med = round( $size / 1024, 1);
    		
    		//récupération du type mime a tester pour stockage dans la BdD
    		$type = $image["type"];
    		$tabtype = explode('/', $type);
    		
    		//test du type de document pour le placer dans le bon dossier...
    		if($tabtype[0] == 'image')
    		{
    			$cat = 'photos';
    		}
    		else
    			$cat = $tabtype[0];
    				
    		list($width, $height) = getimagesize($tmp_name);
    		$uploadPath = '/' . $cat . '/' . $name;
    		$srcFile = $tmp_name;
    		//fichier de destination
    		//$destFile = '/' . $cat . '/thumbnails/' . $name;
    		$destFile = './thumbnails/' . $name;
    		//list($width, $height, $type, $attr) = getimagesize($tmp_name);
    		//creation d'une thumbnail (miniature) sa marche impec
    		if($width >= 125)
    			$thumb_name_med = createThumbnail($srcFile, $destFile, 125, 75);
    		else
    			$thumb_name_med = createThumbnail($srcFile, $destFile, 75, 75);
    		if ($thumb_name_med != '')
    		{
                            //changement des règle de propriétaire (sa change rien :()
    			chown( '/' . $cat, 666);
    			$result = move_uploaded_file($srcFile, $uploadPath);
    			// si l'upload a échoué
    			if (!$result)
    			{
                                    //changement des règle de propriétaire pour pouvoir éffacer sa marche
    				chown("/thumbnails", 666);
    				unlink($uploadDir . $imagePath);
    				$imagePath = $thumbnailPath = '';
    			}
    			else
    				$thumbnailPath = $result;
    		}
    		else
    		{
    			// the product cannot be upload / resized
    			$imagePath = $thumbnailPath = '';
    		}
    	}
    }
    [EDIT]
    J'ai tester avec la fonction copy() même erreur je teste regarde du côté des droits sur le répertroire...
    nn sa n'a rien donner de ce côté les utilisateur système et tout le monde on tout les droits sur les dossier que j'utilise...
    [/EDIT]
    [EDIT 2]
    bon ben moi j'ai trouver mon bonheur grâce à ce site
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //code ne marchant pas...
     $uploadPath = '/' . $cat . '/' . $name;
    //code qui marche...
     $uploadPath = './' . $cat . '/' . $name;
    [/EDIT]
    désoler de vous avoir déranger en espérant aider ceux qui sont bloquer par ce problème personnellement ça faisait pas loins d'une semaine que je tester différente solution j'y suis finalement arriver ciao

Discussions similaires

  1. Move Upload File
    Par meylanie dans le forum Langage
    Réponses: 1
    Dernier message: 08/09/2010, 19h56
  2. move uploaded file capricieux
    Par shelko dans le forum Langage
    Réponses: 5
    Dernier message: 30/03/2010, 22h58
  3. function move uploaded file
    Par ludojojo dans le forum Langage
    Réponses: 3
    Dernier message: 14/09/2009, 17h35
  4. [Upload] Move Uploaded File (OVH)
    Par Jules-67 dans le forum Langage
    Réponses: 7
    Dernier message: 26/04/2008, 09h57
  5. [Upload] move uploaded file
    Par alex78100 dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2007, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo