Kada vaš pružatelj hosting usluga prijeđe na PHP verzije 5.3 vrlo je vjerojatno da će vas dočekati date.timezone error kao prst u oko vašem web projektu ili još gore projektu za vašeg klijenta. To se događa kada se PHP ne pogoni kao dio Apache modula zbog veće sigurnost kada je u pitanju dijeljeni (shared) hosting.
Koliko god se stanje činilo alarmantno stvar nije toliko komplicirana i zapravo ova je pogreška vrlo česta u što se možete uvjeriti ako ‘guglate’ poruku o pogrešci.
Kroz jedan konkretan primjer pokazat ću vam kako se riješiti ovog errora na primjeru CMS-a Joomla 1.5.x, foruma Kunena 1.5.x (ex. Fireboard) i naravno PHP-a verzije 5.3. Iako mora biti jasno da ovo nije problem samo Joomle niti je ekskluzivan za Joomlu.
Ako se pitate zašto bi netko još uvijek koristio Joomlu verzije 1.5.x u pitanju je jedan stari projekt te je prije migracije na WordPress potrebno ispeglati sve postojeće probleme.
Prvi način na koji ovaj problem možete riješiti je pomoću php.ini datoteke tako da ubacite sljedeći sadržaj unutar nje.
1 |
date.timezone = "Europe/Berlin" |
Popis podržanih vremenskih zona možete pronaći ovdje no ako nemate pristup toj datoteci to ne znači da ostajete bez opcija.
Kod Joomle npr. možete očekivati sljedeće dvije poruke:
1 |
Warning: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /home/public_html/libraries/joomla/utilities/date.php on line 56 |
1 |
Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /home/public_html/libraries/joomla/utilities/date.php on line 198 |
U ovom slučaju je dovoljno u date.php na dno ubaciti:
1 |
date_default_timezone_set('Europe/Berlin'); |
Dok kod Kunena foruma možete očekivati sljedeće poruke:
1 |
Warning: strftime() [function.strftime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /home/public_html/components/com_kunena/lib/kunena.timeformat.class.php on line 156 |
1 |
Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /home/public_html/components/com_kunena/template/default/plugin/stats/stats.class.php on line 52 |
Pri čemu je dovoljno u kunena.timeformat.class.php datoteku odmah iza:
1 |
function KUNENA_timeformat($logTime, $show_today = true) { |
ubaciti
1 |
date_default_timezone_set('Europe/Berlin'); |