web-dev-qa-db-fra.com

PHP Attention: move_uploaded_file () ne peut pas se déplacer

J'ai lentement appris PHP et j'ai trouvé un tableau d'informations sur le sujet et les solutions publiées par d'autres développeurs. J'essaie d'avoir une application Android Android téléchargez un fichier sur le serveur PHP via la publication HTTP. Cependant, quelque chose ne fonctionne pas sur mon serveur alors que j'essaie d'écrire dans un fichier en PHP.

Voici le code PHP:

// Where the file is going to be placed
$target_path = "/var/www/media2net/uploads/uploads";

/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename($_FILES['uploadedfile']['name']);

if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']) .
        " has been uploaded";
    chmod("uploads/" . basename($_FILES['uploadedfile']['name']), 755);
} else {
    echo "There was an error uploading the file, please try again!";
    echo "filename: " . basename( $_FILES['uploadedfile']['name']);
    echo " target_path: " .$target_path;
}

Je sais déjà en inspectant Wire Shark côté client que la publication http est envoyée correctement, j'ai également veillé à ce que le répertoire dans lequel j'écris le fichier dispose des autorisations appropriées et que le mode sans échec php soit désactivé.

la sortie du fichier error.log Apache2 lit

[Wed Dec 05 09:25:36 2012] [error] [client 74.14.162.250] PHP Warning:  
move_uploaded_file(): Unable to move '/tmp/phpVLOnn3' to  
'/var/www/media2net/uploads/downloaded_file.png' 
in /var/www/media2net/upload.php on line 9

Toute aide avec ce problème ou d'autres moyens de résoudre ce problème serait appréciée.

16
brendosthoughts

Modifiez les autorisations de téléchargement pour/var/www/media2net/uploads/soit en changeant de propriétaire avec "chown" ou par "chmod"

Exemples

$ Sudo chown Apache:apache /var/www/media2net/uploads/
$ Sudo chmod 755 /var/www/media2net/uploads/

Également si downloaded_file.png existe déjà dans ce répertoire et appartient à un autre utilisateur, vous devrez également modifier la propriété de ce fichier.

$ Sudo chown Apache:apache /var/www/media2net/uploads/downloaded_file.png

De cette façon, il peut être écrasé avec succès par Apache.

19
Niclas Larsson

Cela a résolu le problème pour moi:

$ Sudo chown -R www-data:www-data /var/www/html/
3
Mona Jalal

Celui-ci a bien fonctionné dans le système d'exploitation Ubuntu. Il vous suffit de changer de propriétaire

Sudo chown -R www-data:www-data (path to the image folder)

0
Emmanuel Mbuvi