The server's giving a 500 error when he tries to upload, not a 404.
Anyway, this is rather strange, but I don't believe it has anything to do with the code. That has no flaws, and I've never known a php script to generate a 500 error under any circumstance. A misconfiged php.ini *might*, but I...