Merhaba,

30.10.2016 itibari ile Türkiyede yaz saati uygulaması kaldırılmış olup Bilgi Teknolojileri ekiplerinin de buna ayak uydurması beklenmektedir. Bu değişikliğin sunucularda yapılması için gerekli adımlardan kısaca bahsedelim.

Linux İşletim Sistemi tarafındaki timezone güncelleme adımları:

İlk olarak Redhat/Centos/Fedora gibi linux bazlı işletim sistemlerinde saat düzenlemesine uyum saglamak ve GMT+3 zaman dilimine geçiş için paket yönetici ile aşağıdaki kurulumların yapılması gerekmektedir.

sudo yum clean all
sudo yum -y install tzdata*2016g*
sudo zdump -c 2016,2017 -v "Europe/Istanbul"
sudo date

Debian, Ubuntu ve benzeri bir Debian Linux dağıtımı kullanıyorsanız;

sudo apt-get update
sudo apt-get install tzdata tzdata-java
sudo zdump -c 2016,2017 -v "Europe/Istanbul"
sudo date

işlemlerini tamamladığınızda “Mon Oct 31 14:30:19 +03 2016” formatında tarihi gösterecektir.

Buradaki +03 ibaresini görüyorsanız bu işlem başarıyla tamamlanmıştır.

Opsiyonel Not :
Eğer eski bir debian dağıtımı kullanıyorsanız ve paket yöneticisi ile kurulum yapamıyorsanız aşağıdaki işlemi uygulayarak sourcelist’inizi güncelleyebilirsiniz.


sudo vi /etc/apt/sources.list

deb http://httpredir.debian.org/debian/ wheezy main contrib non-free
deb-src http://httpredir.debian.org/debian/ wheezy main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
deb http://httpredir.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://httpredir.debian.org/debian/ wheezy-updates main contrib non-free

Bu kaynaklar GPG key hatası verir ise aşagıdaki komut ile hızlıca fixleyebilirsiniz.

sudo gpg --keyserver pgpkeys.mit.edu --recv-key 7638D0442B90D010; gpg --keyserver pgpkeys.mit.edu --recv-key 8B48AD6246925553;gpg --keyserver pgpkeys.mit.edu --recv-key 9D6D8F6BC857C906;gpg --keyserver pgpkeys.mit.edu --recv-key 6FB2A1C265FFB764;gpg -a --export 6FB2A1C265FFB764 | sudo apt-key add -;gpg -a --export 9D6D8F6BC857C906 | sudo apt-key add -;gpg -a --export 7638D0442B90D010 | sudo apt-key add -;gpg -a --export 8B48AD6246925553 | sudo apt-key add -

Windows işletim sistemleri için timezone güncellenmesi

Windows işletim sistemlerinde aşağıdaki linklerden işletim sisteminize uygun olan yamanın indirilip kurulması gerekmektedir.

Windows 10 Öncesi için
https://support.microsoft.com/en-us/kb/3192321

Windows10 ve Server 2016 için
http://www.catalog.update.microsoft.com/Search.aspx?q=3194798

PHP için timezone ayarlarının yapılması

PHP tarafında Türkiye için saat diliminin düzeltilmesi için iki farklı yöntem mevcut.

Bunlardan birisi, php.ini dosyasındaki timezone tanımlamasının “Europe/Istanbul” yerine “Etc/GMT-3” seçilmesidir.

Bu işlemi linux üzerinde aşağıdaki adımları takip ederek yapabilirsiniz.

Sunucunuzda hangi php.ini dosyasının kullanıldığını bulmak için aşağıdaki komutu çalıştırabilirsiniz.

sudo php -i|grep php.ini

Çıktısı:

Loaded Configuration File => /etc/php.ini

Daha sonra php.ini dosyasını favori editörünüz ile açıp içinde geçen date.timezone = "....." tanımlamasını  date.timezone = "Etc/GMT-3"  olarak güncellemeniz gerekmektedir.

Bundan sonra php-fpm kullanıyorsanız;

sudo /etc/init.d/php-fpm restart

Apache kullanıyorsanız;

sudo /etc/init.d/httpd restart

komutlarını çalıştırarak güncel config’i devreye almış olursunuz.

Eğer kullandığınız veya kendi geliştirdiğiniz yazılımlar içerisinde sabit olarak time zone manuel set edilmiş ve güncellenemiyor ise php.ini de değişikliği yapmış olsanız bile, uygulama tanımlandığı saat dilimi ile çalışmaya devam edecektir. Bunu çözmek için aşağıdaki alternatif yöntemi kullanabilirsiniz.

Böyle bir durum olup olmadığını kontrol etmek için uygulama kodları içinde ini_set( 'date.timezone', 'Europe/Istanbul' ); satırının geçip geçmediğini kontrol edebilirsiniz.

Alternatif yöntem: Europe/Istanbul timezone’unun GMT+3 olarak hesaplanmasını sağlamak

Bunun için php’nin pecl timezone extension’ini kullanacağız. Bu extensionı https://pecl.php.net/package/timezonedb adresinden inceleyebilirsiniz.

24 Ekim 2016’da yayınlanan 2016.8 versiyonu ile Türkiye’nin saat dilimi sabit olarak GMT+3 kalacak şekilde düzeltilmiştir.

Linux sistemlerde bu extension’ı kurmak için aşağıdaki komutu çalıştırmanız gerekecektir.

sudo pecl install timezonedb

Sonrasında;
Php.ini dosyanıza extension=timezonedb.so  satırını eklemelisiniz ve php.ini’deki saat dilimi tanımlamasının date.timezone = "Europe/Istanbul"  olarak kaldığından emin olmalısınız.

Bundan sonra php-fpm kullanıyorsanız;

sudo /etc/init.d/php-fpm restart

Apache kullanıyorsanız;

sudo /etc/init.d/httpd restart

komutlarını çalıştırarak güncel config’i devreye almış olursunuz.

Windows’da ise https://pecl.php.net/package/timezonedb sayfasındaki güncel sürüme ait dll dosyasını indirmeniz ve php/ext klasörüne kopyalamanız gerekmektedir.

Sonrasında;
Php.ini dosyanıza extension=timezonedb.dll satırını eklemelisiniz ve php.ini’deki saat dilimi tanımlamasının date.timezone = "Europe/Istanbul" olarak kaldığından emin olmalısınız.

Kurulum ve konfigrasyonun test edilmesi

Bir php dosyası oluşturarak ayarların doğru olduğunu doğrulayabiliriz.

Linux üzerinde komut satırından sudo vi datetest.php komutunu çalıştırıp içine aşağıdaki satırları yapıştırın.

<?php
echo date('r');
?>

Dosyayı kaydettikten sonra sudo php datetest.php  komutunu çalıştırdığımızda Mon, 31 Oct 2016 14:56:22 +0300 gibi bir çıktı görmeliyiz. Bu çıktıda +0300 görüyorsak işlem başarılı demektir.

Aynı php dosyasını windows üzerinde de oluşturarak kontrol edebilirsiniz.

 

ÖNEMLİ NOT : Varsayılan ayarlarla çalışan MySQL Database Sunucunuz için timezone güncelleme işlemi işletim sistemi üzerindeki bilgiler alınarak yapıldığından mysql database servisini restart etmeniz gerekmektedir.