1

Edit:

I noticed similarly answered questions that detailed setups that were running MAMP servers on local machines. The error in this question is from error.log on a live remote LAMP server.

My app receives a json error when trying to call the upload function that is being hosted on a live LAMP remote server. The error reads: errorJson('Upload on server problem. Please try again!');.

When checking the error.log the output reads

[24-Jul-2020 13:14:49 America/Los_Angeles] PHP Warning:  move_uploaded_file(upload/30.jpg): failed to open stream: Permission denied in /var/www/html/api.php on line 81
[24-Jul-2020 13:14:49 America/Los_Angeles] PHP Warning:  move_uploaded_file(): Unable to move '/tmp/phpQay1Tw' to 'upload/30.jpg' in /var/www/html/api.php on line 81

Here is the upload function from /var/www/html/api.php

function upload($id, $photoData, $title) {

// index.php passes as first parameter to this function $_SESSION['IdUser']
// $_SESSION['IdUser'] should contain the user id, if the user has already been authorized
// remember? you store the user id there in the login function
if (!$id) errorJson('Authorization required');

// check if there was no error during the file upload
if ($photoData['error']==0) {

    // insert the details about the photo to the "photos" table
    $result = query("INSERT INTO photos(IdUser,title) VALUES('%d','%s')", $id, $title);
    if (!$result['error']) {

        // fetch the active connection to the database (it's initialized automatically in lib.php)
        global $link;
     
        // get the last automatically generated ID in the photos table
        $IdPhoto = mysqli_insert_id($link);
     
        // move the temporarily stored file to a convenient location
        // your photo is automatically saved by PHP in a temp folder
        // you need to move it over yourself to your own "upload" folder

        //understanding > text edit cont...!
        //move_uploaded_file
        //&
        //thumb("upload/"

Line 81

        //move_uploaded_file — Moves an uploaded file to a new location
        if (move_uploaded_file($photoData['tmp_name'], "upload/".$IdPhoto.".jpg")) {

            // file moved, all good, generate thumbnail
            thumb("upload/".$IdPhoto.".jpg", 180);
            
            //just print out confirmation to the iPhone app
            print json_encode(array('successful'=>1));
        } else {
            //print out an error message to the iPhone app
            errorJson('Upload on server problem. Please try again!');
        };

    } else {
        errorJson('Hmm...Upload database problem!'.$result['error']);
    }
} else {
    errorJson('Upload malfunction');
}
} 

What we've found

move_uploaded_file failed to open stream and Permission denied error

Solution enter image description here

And

move_uploaded_file gives "failed to open stream: Permission denied" error

enter image description here

The result is an app with blank placeholder images

enter image description here

I have yet to try the above. Does this look like the correct solution?

Should the errors be resolved seperatley or will allowing permissions remove both errors?

Shadow
  • 33,525
  • 10
  • 51
  • 64
john smith
  • 73
  • 1
  • 7

0 Answers0