I'm not sure I'm following you. The timestamp on the server (and the value returned by time()) is GMT; specifically, the number of seconds since 1970-01-01 00:00:00 GMT. The server's timezone setting is only used to control how that date/time is displayed when requested in human-readable terms. If you use PHP's gmdate() function, at any given time any given server anywhere in the world should output the same exact string reflecting the current GMT (UTC) date/time, assuming the server has it clock correctly set.
If you want it to in fact display as the server's local time, then the date() function should output that without requiring the use of date_default_timezone_set(). It only raises a notice - not an error - in PHP 5.1.0+ if you don't set it, as a way of saying, "Hey, are you sure you want to use the server's local timezone setting here?" You can suppress that notice with the @ operator or via your error_reporting settings if you don't want to worry about it and just use whatever the server thinks of as its local timezone.
If this does not address your problem, then I guess I need a better explanation of what you need to have happen.