Kalau dirangkum, sebenarnya ada 2 perubahan konfigurasi yang akhirnya menyelesaikan masalah. Kita juga melakukan beberapa langkah investigasi untuk memastikan akar masalahnya.
Langkah investigasi
✅ Memastikan timezone Linux
timedatectldateHasil: Asia/Makassar (WITA)
✅ Memastikan timezone PHP CLI
Awalnya:
php -r "echo date_default_timezone_get();"Hasil:
UTCSetelah diperbaiki:
Asia/Makassar
✅ Memastikan PHP-FPM yang dipakai website
Nginx menggunakan:
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
✅ Memastikan PHP-FPM sudah memakai timezone lokal
Membuat
info.phpHasil:
Asia/Makassar 2026-07-19 10:00:04
✅ Memastikan MariaDB tidak bermasalah
SELECT NOW(), @@session.time_zone, @@global.time_zone;Hasil:
NOW()sesuai WITAtimezone =
SYSTEM
✅ Memastikan struktur tabel
created_atdanpublished_atbertipe DATETIME, bukanTIMESTAMP.Artinya MariaDB tidak mengubah timezone.
✅ Memeriksa
NewsModelDitemukan:
protected $useTimestamps = true;Berarti CodeIgniter mengisi
created_atdanupdated_at.
✅ Memeriksa
App.phpDitemukan:
public string $appTimezone = 'UTC';
Perubahan yang benar-benar menyelesaikan masalah
1. Mengubah timezone PHP
CLI
/etc/php/8.2/cli/php.ini
ubah menjadi
date.timezone = Asia/Makassar
PHP-FPM
/etc/php/8.2/fpm/php.ini
ubah menjadi
date.timezone = Asia/Makassar
lalu:
systemctl restart php8.2-fpm
2. Mengubah timezone CodeIgniter
File:
app/Config/App.php
dari
public string $appTimezone = 'UTC';
menjadi
public string $appTimezone = 'Asia/Makassar';
Hasil akhir
Sebelumnya:
created_at : 2026-07-19 01:57:55
published_at : 2026-07-19 01:57:55
Sesudah perubahan:
created_at : 2026-07-19 10:10:35
published_at : 2026-07-19 10:10:35
updated_at : 2026-07-19 10:10:35
Semuanya sudah mengikuti waktu lokal (WITA).
Kesimpulan teknis
Akar masalahnya bukan pada controller News.php, bukan pada NewsModel.php, dan bukan pada MariaDB. Penyebabnya adalah konfigurasi timezone yang belum selaras:
PHP masih menggunakan UTC.
CodeIgniter (
$appTimezone) juga masih UTC.
Setelah kedua konfigurasi tersebut disamakan ke Asia/Makassar, seluruh proses penyimpanan tanggal pada berita berjalan sesuai waktu lokal. Ini juga menjelaskan mengapa kode controller dari pengembang sebenarnya tidak perlu diubah—yang perlu diperbaiki adalah konfigurasi lingkungan dan konfigurasi aplikasi.
0 comments:
Post a Comment