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 :

move_uploaded_file renvoie false [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut move_uploaded_file renvoie false
    Bonjour (ou bonsoir) à tous et à toutes,

    J'ai, comme vous vous en doutez, un pitit soucis avec PHP. Et là, j'ai beau chercher, je ne trouve pas.
    Je tourne donc en local pour l'instant, et j'ai fais un formulaire pour uploader des vidéos sur le site. Pour ce faire, j'utilise un formulaire HTML tout simple, qui renvoie sur des iFrame et j'utilise l'extension APC.
    Le formulaire en lui même à l'air de fonctionner, APC me renvoie bien les données pour faire un système de progression et l'iFrame (qui au final sera cachée), me renvoie bien mes messages pour debugger.

    Mais le soucis vient de ma fonction move_uploaded_file. Elle me renvoie false. $_FILE['video']['error'] (la variable pour mon fichier vidéo) me renvoie bien 0, donc pas d'erreur. Je tourne sous linux, j'ai donc pensé un soucis de droits... Pour être tranquille j'ai donc chmodé tout le dossier en 777... ça ne change rien. Pour être (archi)sûr que ce n'est pas ça, j'ai tenté avec un autre script. Il m'a tout uploader sans problème. Donc si :
    - $_FILE['video']['error'] me renvoie 0
    - Le chmod est à 777 (pour l'instant), et le chown correspond bien pour apache
    - J'arrive à déplacer, dans un autre script, mon fichier dans le dossier
    - Et PHP est configuré pour monter à 300M d'upload (aussi bien du côté d'APC que de post_max_size et upload_max_filesize), et bien évidemment le fichier fait moins que 300M

    Pourquoi move_uploaded_file me renvoie 0 ? De mon côté je continue de chercher mais j'au du mal. Je vous copie le script.

    Formulaire HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <form method="post" action="scripts/uploads_server.php" onSubmit="upload_start();" enctype="multipart/form-data" target="frame2"><p>
    	<input type="hidden" id="keyFile" name="APC_UPLOAD_PROGRESS" value="<?php echo $id; ?>" />
    	<input type="hidden" id="type" name="type" value="video_tec" />
    	<input type="hidden" name="id" value="<?php echo $file->get_id(); ?>" />
    	<label>Fichier vid&eacute;o</label>&nbsp;
    	<input type="file" style="border: dashed 1px #777;" name="video" />
    	<input type="submit" value="Upload" />
    	</p>
    	<div id="upload_status"></div>
    	<iframe name="frame" id="frame" width="0" height="0" style="visibility: hidden" src="scripts/uploads.php?type=videotec&amp;id=' , $id , '&amp;d=' , date('c', time()) , '"></iframe>
    	<iframe name="frame2" id="frame2" src="scripts/uploads.php?type=videotec&amp;id=' , $id , '&amp;d=' , date('c', time()) , '" width="500" height="270" style="visibility:visible"></iframe>
    </form>
    scripts/uploads_server.php (le script utilisé par l'iFrame pour uploader le fichier)
    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
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<title>Muzikos.fr - Communaut&eacute; musicale interactive</title>
    		<script type="text/javascript" src="scripts/uploads.js"></script>
    	</head>
    	<body>
     
    <?php
    	if (isset($_POST['APC_UPLOAD_PROGRESS']) && isset($_POST['type']) && isset($_FILES['video'])) {
    		$info = apc_fetch('upload_' . $_POST['APC_UPLOAD_PROGRESS']);
     
    		if (count($_FILES) > 0) {			
    			$path = '';
     
    			switch(strtolower($_POST['type'])) {
    				case 'video_tec':
    					$mime = explode('/', $_FILES['video']['type']);
    					$tmp = $_FILE['video']['tmp_name'];
    					$name = 'tmp.' . $mime[1];
    					$path = $_SERVER['DOCUMENT_ROOT'] . '/test/' . $name;
    					$autorise = array('mp4', 'avi', 'wmv', 'flv');
    					$max = 300000000;
    					break;
    			}
     
    			if (in_array($mime[1], $autorise)) {
    				if ($_FILES['video']['size'] <= $max) {
    					if (!move_uploaded_file($tmp, $path)) {
    						echo 'Erreur de chargement de la vid&eacute;o : ' . $_FILES['video']['error'] . '<br />' ,
    							$_FILES['video']['tmp_name'] , ' => ' , $path , '<br /><br />';
    					}
    				} else {
    					echo 'Votre fichier est trop lourd pour &ecirc;tre charg&eacute;';
    				}
    			}  else {
    					echo 'Votre fichier n\'est pas reconnu comme &eacute;tant une vid&eacute;o.';
    			}
     
    			echo '<script type="text/javascript" src="uploads.js"></script>';
    			echo '<script type="text/javascript">' ,
    			'upload_stop("' , $info['filename'] , '");' ,
    			'</script>';
    		}
    	}
    ?>
     
     
    	</body>
    </html>
    Voilà, je vous remercie d'avance pour tout !
    Max

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    move_uploaded_file a deux type de retour :
    FALSE si le fichier n'est pas conforme
    FALSE + Warning si le fichier ne peut pas être déplacé.

    Assure toi donc que les warning s'affichent bien.
    Si c'est le cas et que tu n'as pas de warning, c'est que tu es dans le premier cas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonsoir sabotage,

    D'abord merci pour ta réponse ! Ensuite... j'ai honte

    J'avais également pensé aux warnings, du coup j'avais mis error_reporting(E_ALL) en tête de mon fichier... mais voilà, j'ai plus pensé que j'avais réinstallé PHP et que j'avais perdu ma configuration précédente. Alors, comme je ne voyais aucun message d'erreur ni de warning (error_display à Off), je pensais que la fonction renvoyait false... sans warning et je ne comprenais pas pourquoi. Mais, là, ça a fait tilt et du coup j'avais bien des warnings, qui ont été corrigés.

    Tout fonctionne !

    Merci et encore désolé pour le dérangement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/09/2008, 10h22
  2. Réponses: 2
    Dernier message: 21/02/2008, 15h13
  3. Réponses: 1
    Dernier message: 26/07/2007, 16h30
  4. Automation Word : CreateDispatch renvoie FALSE
    Par Cram_N7 dans le forum C++
    Réponses: 1
    Dernier message: 12/03/2007, 17h27
  5. isset() me renvoie False
    Par pc.bertineau dans le forum Langage
    Réponses: 13
    Dernier message: 06/03/2007, 12h38

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