2012-01-03 3 views
0

Je crée un téléchargeur d'image mais j'ai rencontré 2 erreurs. Lesquelles sont:PHP: Problèmes de téléchargement

Warning: move_uploaded_file(upload/Corgi 007.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/stationr/public_html/admin/doupload.php on line 12 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/chroot/tmp/phpMvRSbS' to 'upload/Corgi 007.jpg' in /home/stationr/public_html/admin/doupload.php on line 12 

Les erreurs se produisent lorsque j'appelle la méthode move_uploaded_file(). Voici mon code (notez que ceci n'a aucune erreur en vérifiant quoi que ce soit, c'est juste le téléchargement).

<?php 
error_reporting(E_ALL); 
error_reporting(-1); 
ini_set('error_reporting', E_ALL); 

$filename = $_FILES["file"]["name"]; 
$filesize = $_FILES["file"]["size"]; 

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/$filename"); 

?> 

Répondre

1

Vous avez omis de vérifier si le téléchargement a réussi à tous:

if ($_FILES['file']['error'] === UPLOAD_ERR_OK) { 
    move file ... 
} else { 
    die("Upload failed with error code " . $_FILES['file']['error']); 
} 

Les codes d'erreur sont documentés ici: En plus http://www.php.net/manual/en/features.file-upload.errors.php

, est-il un sous-répertoire "upload" dans quel que soit le répertoire de travail actuel de votre script? Le processus du serveur Web dispose-t-il des autorisations d'écriture sur ce répertoire?

Et en tant que trou de sécurité MAJEUR, l'utilisation en aveugle du paramètre ['name'] du téléchargement comme nom de fichier cible permet à un utilisateur malveillant de gribouiller sur TOUT fichier sur votre serveur. N'utilisez jamais aveuglément ce nom de fichier. Si le nom du fichier de téléchargement est fourni (par exemple) ../../../../../../etc/passwd, vous avez maintenant autorisé quelqu'un à remplacer votre fichier de mot de passe système.

+0

Oh mec, c'est embarrassant .. Dans ma hâte j'ai complètement oublié d'ajouter "../" au dossier de destination. Et oui, je sais tout sur le côté de la sécurité du téléchargement (Le téléchargeur est uniquement accessible par admin, qui est également sécurisé). Merci pour l'aide. –

+0

Ne partez pas avec la sécurité par l'obscurité. Si quelqu'un réussit à pirater/contourner la connexion, vous ne devriez toujours pas lui fournir les outils pour vider votre serveur. Faites-les se battre pour chaque terrain qu'ils peuvent gagner. –

Questions connexes