Supposing your server is Apache and PHP is an Apache module, then the file is uploaded with a owner of NOBODY (I mean, the Apache user). In safe mode, PHP won't open files if their owner is not the same as the PHP script's owner.
So you can set the script's owner to be the user who is running the Apache server, or you can set up SUID script to change the owner of the uploaded file to the owner of the PHP script.
Both solutions have their drawbacks. I think PHP sources should be changed to alleviate the file owner check when the file is an uploaded one.