What do your errors logs say? I would expect there to be something logged there as a result of the error you’re seeing.
Ownership might be another thing to check. For example, if your server is running libphp5 mode (rather than fastcgi), files uploaded via FTP will have different ownership than files created via scripts on the server (libphp5 runs as user httpd.httpd), so you might need to reset them (chown/chgrp) after upload.
Fastcgi doesn’t have the ownership problem because it runs as your own user.group, so if you can, see if you can switch PHP mode over to this.