Nastavení časového pásma v PHP

Občas se při provozování webu můžete dostat do situace, že potřebujete pracovat s přesnými časovými údaji. Osobně jsem se s touto potřebou setkal při provozování eshopu s módními doplňky – čas objednávky je zaznamenáván a dále se s ním pracuje pro potřeby fakturace. Vzhledem k tomu, že hostuji weby u Hostgator.com, který má serverovny umístěny v Texasu, odpovídá i nastavení časového pásma místnímu, tedy americkému času.

date/time support enabled
„Olson“ Timezone Database Version 2008.9
Timezone Database internal
Default timezone America/Chicago

Občas se mi tak stávalo, že docházelo k nepřesnostem v datu objednávky vzhledem k časovému posunu. Proto jsem pátral po možnostech, jak v PHP nastavit správné časové pásmo pro server umístěný v Americe. Samozřejmě – nejjednodušší by bylo, přesunout si své weby na server do ČR. To by ale nebyla ta správná výzva :)

Nastavení výchozího časového pásma (default timezone) v PHP – řešení

V PHP lze výchozí časové pásmo serveru nastavit několika způsoby:

  1. přímým zápisem do php skriptu
  2. úpravou direktivy v php.ini
  3. za pomoci souboru .htaccess

Ve všech použitých případech je nutno využít validní konstantu pro výchozí časové pásmo – Českou republiku, což je řetězec Europe/Prague! Seznam dalších použitelných konstant pro nastavení default timezone naleznete na stránkách projektu PHP.

Nastavení default timezone přímo v PHP skriptu

Většinou se tímto způsobem zapíše nastavení do konfiguračního souboru PHP aplikace. Zápis pak vypadá nějak takto:

<?php
date_default_timezone_set(‘Europe/Prague’);
?>
 

Nastavení default timezone pomocí direktivy PHP.INI

V souboru PHH.INI, který je hlavním konfiguračním souborem PHP, je možno nastavit výcozí časové pásmo serveru za pomocí změny direktivy date.timezone. Do php.ini souboru tak stačí dopsat následující řádek:

date.timezone Europe/Prague

Nastavení default timezone pomocí souboru .htaccess

Nemáte-li možnost úpravy souboru php.ini, případně nemůžete-li jednoduše nastavit ve vlastních skriptech výchozí časové pásmo, postačí drobná úprava souboru .htaccess. Samozřejmě je nutné, aby poskytovatel hostingu editaci souboru .htaccess podporoval, což v současné době drtivá většina umožňuje.
Pro nastavení pak stačí do .htaccess vložit následující řádek:

SetEnv TZ Europe/Prague

Tags: , ,

Leave a Reply