Penggunaan fungsi CONFIG.TIME_ZONE pada PHP

Ketika saya menggunakan fungsi date() PHP pada dua server yang berbeda, saya mendapatkan dua hasil yang berbeda, tetapi kedua server harus sama.

Saya memeriksa file php.ini pada server # 1, di mana waktunya tepat, dan tampilannya sebagai berikut:

date/time support                   enabled
"Olson" Timezone Database Version   0.system
Timezone Database                   internal
Default timezone                    America/Chicago

Directive        Local Value        Master Value
---------------------------------------------------
date.timezone    America/Chicago    America/Chicago

Saya memeriksa server # 2 dan tampilannya sebagai berikut:

date/time support                   enabled
"Olson" Timezone Database Version   0.system
Timezone Database                   internal
Default timezone                    UTC

Directive        Local Value        Master Value
---------------------------------------------------
date.timezone    America/Chicago    America/Chicago

Satu-satunya perbedaan yang saya lihat adalah nilai "Zona waktu default".

Tanggal/waktu untuk kedua server ditampilkan saat ini sebagai:

Server #1: 10/23/2012 09:40:39
Server #2: 10/23/2012 14:40:39

Saya mengkonfirmasi bahwa kedua server menggunakan php.ini yang terletak di dalam /etc dan saya juga mencari kedua direktori web untuk tempat mana pun yang mungkin ditimpa oleh zona waktu:

grep -r "date_default_timezone_set" *

Namun dalam hal itu, keduanya mengandung file yang sama dengan pengaturan yang sama.

Apakah "Zona waktu default" apa yang menyebabkan perbedaan 5 jam? Jika demikian, bagaimana cara memperbaikinya?

PERBARUI

Memuat file konfigurasi.

Server # 2 berisi dua file ini tambahan:

/etc/php.d/snmp.ini
/etc/php.d/apc.ini

php -i hasil.

Server # 1:

date/time support => enabled
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => America/Chicago

Directive => Local Value => Master Value
date.timezone => America/Chicago => America/Chicago

Server # 2:

date/time support => enabled
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => America/Chicago

Directive => Local Value => Master Value
date.timezone => America/Chicago => America/Chicago

Yang menarik untuk dicatat di sini adalah karena alasan tertentu "Zona waktu default" tidak cocok pada server # 2 saat melihatnya melalui php -i dibandingkan phpinfo() pada halaman web.

SOLUSI

Masalahnya dengan CMS dan plugin-nya. Meskipun server # 1 dan # 2 memiliki file dan segalanya yang sama, tampaknya plugin tidak dimuat dalam urutan yang sama pada setiap server, yang memungkinkan plugin terakhir dimuat untuk menentukan zona waktu skrip saya.

Alasan php -i dan phpinfo berbeda karena setelah Anda menggunakan date_default_timezone_set(), itu mempengaruhi apa yang akan dicetak phpinfo().

Cara mengatasinya adalah memastikan bahwa saya berada di zona waktu yang saya perlukan melalui date_default_timezone_set(). Alasan yang tidak berfungsi untuk saya sebelum saya memposting pertanyaan ini adalah karena saya menyatakan ini sebelum memuat beberapa file yang diperlukan dari CMS, yang mungkin mengatur zona waktu lagi di sana.

Fungsi date/ time memungkinkan kita untuk mendapatkan tanggal dan waktu dari server tempat skrip PHP yang berjalan. Kemudian kita dapat menggunakan fungsi date/ time untuk memformat tanggal dan waktu dengan beberapa cara.

Catatan: Fungsi ini bergantung pada pengaturan lokal server kita . Ingatlah untuk mempertimbangkan waktu musim panas dan tahun kabisat saat bekerja dengan fungsi-fungsi ini.

Fungsi date/ time PHP adalah bagian dari inti PHP. Tidak diperlukan instalasi untuk menggunakan fungsi-fungsi ini.

FunctionDeskripsi
checkdate() Memvalidasi tanggal Gregorian
date_add() Menambahkan hari, bulan, tahun, jam, menit, dan detik ke tanggal
date_create_from_format() Mengembalikan objek DateTime baru yang diformat sesuai dengan format yang ditentukan
date_create() Mengembalikan objek DateTime baru
date_date_set() Tetapkan tanggal baru
date_default_timezone_get() Mengembalikan zona waktu default yang digunakan oleh semua fungsi tanggal / waktu
date_default_timezone_set() Tetapkan zona waktu yang digunakan oleh semua fungsi tanggal / waktu
date_diff() Mengembalikan selisih antara dua tanggal
date_format() Mengembalikan tanggal yang diformat sesuai dengan format yang ditentukan
date_get_last_errors() Mengembalikan peringatan / kesalahan yang ditemukan dalam string tanggal
date_interval_create_from_date_string() Menyiapkan DateInterval dari bagian relatif string
date_interval_format() Memformat interval
date_isodate_set() Setel tanggal ISO
date_modify() Mengubah stempel waktu
date_offset_get() Mengembalikan offset zona waktu
date_parse_from_format() Mengembalikan larik asosiatif dengan info mendetail tentang tanggal tertentu, menurut format yang ditentukan
date_parse() Mengembalikan larik asosiatif dengan info mendetail tentang tanggal tertentu
date_sub() Mengurangi hari, bulan, tahun, jam, menit, dan detik dari tanggal
date_sun_info() Mengembalikan larik yang berisi info tentang matahari terbenam / matahari terbit dan awal / akhir senja, untuk hari dan lokasi tertentu
date_sunrise() Mengembalikan waktu matahari terbit untuk hari dan lokasi tertentu
date_sunset() Mengembalikan waktu matahari terbenam untuk hari dan lokasi tertentu
date_time_set() Atur waktu
date_timestamp_get() Mengembalikan stempel waktu Unix
date_timestamp_set() Setel tanggal dan waktu berdasarkan stempel waktu Unix
date_timezone_get() Mengembalikan zona waktu dari objek DateTime tertentu
date_timezone_set() Menetapkan zona waktu untuk objek DateTime
date() Memformat tanggal dan waktu lokal
getdate() Mengembalikan informasi tanggal / waktu dari stempel waktu atau tanggal / waktu lokal saat ini
gettimeofday() Mengembalikan waktu saat ini
gmdate() Memformat tanggal dan waktu GMT / UTC
gmmktime() Mengembalikan stempel waktu Unix untuk tanggal GMT
gmstrftime() Memformat tanggal dan waktu GMT / UTC sesuai dengan pengaturan lokal
idate() Memformat waktu / tanggal lokal sebagai bilangan bulat
localtime() Mengembalikan waktu setempat
microtime() Mengembalikan stempel waktu Unix saat ini dengan mikrodetik
mktime() Mengembalikan stempel waktu Unix untuk tanggal
strftime() Memformat waktu dan / atau tanggal lokal menurut pengaturan lokal
strptime() Mengurai waktu / tanggal yang dibuat dengan strftime ()
strtotime() Mengurai tanggal waktu tekstual bahasa Inggris menjadi stempel waktu Unix
time() Mengembalikan waktu saat ini sebagai stempel waktu Unix
timezone_abbreviations_list() Mengembalikan larik asosiatif yang berisi dst, offset, dan nama zona waktu
timezone_identifiers_list() Mengembalikan larik terindeks dengan semua pengenal zona waktu
timezone_location_get() Mengembalikan informasi lokasi untuk zona waktu tertentu
timezone_name_from_ abbr() Mengembalikan nama zona waktu dari singkatan
timezone_name_get() Mengembalikan nama zona waktu
timezone_offset_get() Mengembalikan perbedaan zona waktu dari GMT
timezone_open() Membuat objek DateTimeZone baru
timezone_transitions_get() Mengembalikan semua transisi untuk zona waktu
timezone_version_get() Mengembalikan versi timezonedb