I've been struggling with this image upload issue for a while and have finally found a solution to my problem. I thought I'd detail what I did in case it helps anyone else. For me, the issue was related to the fact that my hosting provider uses open_basedir restrictions. This allows them to limit which directories my PHP scripts have access to read and write to. Like a lot of hosting providers, they host multiple sites on a single box, so limit what your scripts have access to so you don't have the ability to traverse into another persons directories. Whenever an image was uploaded, it went into a temporary upload directory that Prestashop did not have the rights to operate in (i.e. was not included in the open_basedir allowed directories). So while the image did get uploaded to the server, Prestashop was unable to then move the file into its image directories and operate on it as normal. The solution for me was to get my hosting provider to change the PHP temp_upload_dir value to a directory that was inside of those that the open_basedir restrictions allowed me to access. As soon as that change was made, my images upload perfectly, first time! You can check to see if you have open_basedir restrictions in place by checking your phpinfo. If you have a value in open_basedir (rather than null) then there is a good chance you have those restrictions in place, and they may be affecting your ability to upload images. You may be able to change your temp_upload_dir in your php.ini or .htaccess file, depending on whether or not your host allows that, otherwise you may have to call them and get them to make the change for you. This may not be the solution for everyone, but it solved it for me, so hopefully it helps someone. Lastly a huge thanks to amwdesign, who generously helped me diagnose the problem from the other side of the world.