Πρώτα μια μικρή ανάλυση για να γίνει κατανοητό ποιο είναι το πρόβλημα:
Η ρύθμιση Ελληνικού timezone εξυπηρετεί στο να εμφανίζονται με Ελληνική ώρα οι συναλλαγές και οποιεσδήποτε μεταβολές έχουν να κάνουν με χρόνο που υπολογίζεται από την εφαρμογή ή καταγράφεται στη βάση δεδομένων.
Όσοι χρήστες έχουν Dedicated ή VPS server έχουν τη δυνατότητα να ρυθμίσουν γενικά το timezone του server τους από το php.ini για τη PHP και από το my.cnf για τη MySql.
Αν κάποιος έχει Shared Hosting, δεν έχει δυνατότητα τροποποίησης στα αρχεία php.ini και my.cnf γιατί μόνο ο διαχειριστής του server μπορεί να τα τροποποιήσει. Έτσι αν ο server βρίσκεται εκτός Ελλάδας, θα έχει εκ των πραγμάτων ρυθμισμένο timezone της περιοχής που βρίσκεται.
Σε Shared Hosting όσον αφορά τη PHP, υπάρχει η δυνατότητα να αλλάξουμε τη συμπεριφορά του Server προσθέτοντας διάφορες ρυθμίσεις σε ένα αρχείο .htaccess που υπερισχύουν των εντολών του php.ini τοπικά μόνο για το συγκεκριμένο folder που βρίσκεται το .htaccess και για τα subfolders που περιέχει. Στα subfolders μπορούν να υπάρχουν και άλλα αρχεία .htaccess που θα υπερισχύουν των προηγούμενων.
Δυστυχώς δεν υπάρχει δυνατότητα να χρησιμοποιήσουμε .htaccess για να παρακάμψουμε ρυθμίσεις του my.cnf για τη MySQL και επειδή στο Opencart οι χρονικές καταγραφές γίνονται με functions της Mysql πχ NOW(), αυτές καταγράφονται αναγκαστικά με το λάθος timezone του server. Η μόνη λύση για να δώσουμε εντολή αλλαγής του timezone, είναι μέσα από την εφαρμογή, κάθε φορά που υπάρχει σύνδεση με τη βάση δεδομένων.
Με τις παρακάτω αλλαγές μπορούμε να έχουμε Ελληνικό timezone για PHP και MySQL:
Για τη PHP μπορούμε να το κάνουμε με δύο τρόπους:
Τρόπος Α
Μέσα στο φάκελο που βρίσκεται το Opencart, φτιάχνουμε ένα αρχείο text και το ονομάζουμε .htaccess
(Αν χρησιμοποιούμε ήδη το .htaccess για SEO του Opencart, χρησιμοποιούμε αυτό και δεν φτιάχνουμε άλλο)
Προσθέτουμε αυτό στην αρχή του .htaccess
Code: Select all
SetEnv TZ Europe/Athens
στο αρχείο admin/view/template/common/header.tpl μετα το <body> προσθέτουμε αυτό:
Code: Select all
<?php echo date('H:i:s'); ?>
Τρόπος Β
Αν υπάρχει κάποιο πρόβλημα πχ Error 500 κλπ, μπορούμε να κάνουμε την ίδια ρύθμιση προσθέτοντας το παρακάτω κώδικα στο αρχείο system/startup.php
Στη γραμμή 48 αντικαθιστάμε το:
Code: Select all
date_default_timezone_set('UTC');
Code: Select all
date_default_timezone_set('Europe/Athens');
Στο system/database/mysql.php ,πριν τη γραμμή 14:
Code: Select all
mysql_query("SET NAMES 'utf8'", $this->link);
Code: Select all
mysql_query("SET time_zone = 'Europe/Athens'", $this->link);