La fonction date te retourne l'heure indiquer sur le serveur. Si tu utilises un serveur virtuel (WAMP, easyPHP, MAMP, ...) elle te retourne l'heure de ton ordinateur.
Par contre si tu fais héberger ton site sur un serveur il te retournera l'heure (et la date) du serveur : si tu fais héberger ton site sur un serveur à NewYork et que tu es en France, il y a un décalage horaire de 4 heures donc il y aura une erreur de 4 heures sur l'affichage de ton heure.
J'ai fais une recherche rapide, essaye de jeter un oeuil de ce coté : DocPHP - date_default_timezone_set();
Sinon, si tu peux modifier le fichier php.ini tu peux carrément modifier la config de php et corriger ce problème.