PHP Warning: move_uploaded_file() unable to move

72,178

Solution 1

Change upload permissions for /var/www/media2net/uploads/ either by changing owner with "chown" or by "chmod"

Examples

$ sudo chown apache:apache /var/www/media2net/uploads/
$ sudo chmod 755 /var/www/media2net/uploads/

Also, if downloaded_file.png already exists in that directory and it's owned by another user, then you would need to change ownership on that file as well.

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

This way, it can be successfully overwritten by Apache.

Solution 2

This solved the problem for me:

$ sudo chown -R www-data:www-data /var/www/html/
Share:
72,178
brendosthoughts
Author by

brendosthoughts

Updated on August 20, 2020

Comments

  • brendosthoughts
    brendosthoughts over 3 years

    I've been slowly learning PHP and have found an array of information on the subject and solutions posted by other developers. I am attempting to have an android application upload a file to PHP server via HTTP post. However something is not working on my server side wile attempting to write to file in PHP.

    Here is the PHP code:

    // 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;
    }
    

    I already know from inspecting wire shark on client side that http post is sent out correctly, also I have ensured that the directory I'm writing the file to has the correct permissions, and php safe mode is set to off.

    the output from apache2 error.log file reads

    [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
    

    Any help with this problem or further ways to trouble shoot this would be appreciated.

  • Niclas Larsson
    Niclas Larsson over 11 years
    Yeah, I know. It was just an example, changed it.
  • Parapluie
    Parapluie almost 7 years
    Switching ownership to apache:apache did not work for me. I made ownership the same as the owner of the originating php script. This also allowed me to use the more restrictive chmod 770.
  • Niclas Larsson
    Niclas Larsson almost 7 years
    must use the same user as the webserver (if you're using mod_php) or the same user as php-fpm if you're using that. Debian for instance, uses www-data for apache.