2

I wanna make uploads of pictures possible on my homepage. I'm using a script by w3schools to do this:

This is the upload.html

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

And this is the upload.php

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType !="jpeg" && $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

I already created a folder /var/www/uploads/ When trying to upload a 3KB jpeg i get this output:

File is an image - image/jpeg.
Sorry, there was an error uploading your file.
Array ( [fileToUpload] => Array ( [name] => Test Bild Website Upload.jpg [type] => image/jpeg [tmp_name] => /tmp/phpyxW0TX [error] => 0 [size] => 2999 ) )

I'm beginner in php and got really no idea what the problem is. Maybe someone out there can help me with this. :)

7
  • what are your permissions on your " /var/www/uploads/" folder, it will need to be owned by, or writable by your webserver user, most commonly www-data or apache Commented Aug 5, 2015 at 16:10
  • Make sure the permission for ` /var/www/uploads/` are set to 755 Commented Aug 5, 2015 at 16:11
  • Your move_uploaded_file function is returning false. This happens when the file is not a valid upload file OR when the file is a valid upload file, but cannot be moved for some reason. Check your permissions for the folder you are uploading to. Maybe you need to ensure you have read write access. Commented Aug 5, 2015 at 16:11
  • Where can i change the permissions of the folder? The server is running on Debian 7. Edit: Just found it on Filezilla. But the problem is still there. Commented Aug 5, 2015 at 16:17
  • have you got Filezilla ? just right click on the folder and choose permissions then type 755 Commented Aug 5, 2015 at 16:23

1 Answer 1

3
  1. Check to see if you can upload the file at all by executing this at the command line:

    chmod -R 777 /var/www/uploads/

  2. Then try to upload something. If that works, you know it was a permissions issue. But you don't want to leave the uploads folder at 777 permission (which give access to everyone)

  3. If it was a permissions issue, here is the way I like to do permissions:

    chown [your username]:www-data -R /var/www/uploads/

    chmod -R 775 /var/www/uploads/

This changes the group assignment of the folder to www-data, which is typically what apache runs as on a Ubuntu linux server.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.