Sunday, 19 July 2026

Sinkron Waktu Posting dengan Waktu Lokal

 Kalau dirangkum, sebenarnya ada 2 perubahan konfigurasi yang akhirnya menyelesaikan masalah. Kita juga melakukan beberapa langkah investigasi untuk memastikan akar masalahnya.

Langkah investigasi

  1. ✅ Memastikan timezone Linux

    • timedatectl

    • date

    • Hasil: Asia/Makassar (WITA)

  2. ✅ Memastikan timezone PHP CLI

    • Awalnya:

      php -r "echo date_default_timezone_get();"
      

      Hasil:

      UTC
      
    • Setelah diperbaiki:

      Asia/Makassar
      
  3. ✅ Memastikan PHP-FPM yang dipakai website

    • Nginx menggunakan:

      fastcgi_pass unix:/run/php/php8.2-fpm.sock;
      
  4. ✅ Memastikan PHP-FPM sudah memakai timezone lokal

    • Membuat info.php

    • Hasil:

      Asia/Makassar
      2026-07-19 10:00:04
      
  5. ✅ Memastikan MariaDB tidak bermasalah

    SELECT NOW(), @@session.time_zone, @@global.time_zone;
    

    Hasil:

    • NOW() sesuai WITA

    • timezone = SYSTEM

  6. ✅ Memastikan struktur tabel

    • created_at dan published_at bertipe DATETIME, bukan TIMESTAMP.

    • Artinya MariaDB tidak mengubah timezone.

  7. ✅ Memeriksa NewsModel

    • Ditemukan:

      protected $useTimestamps = true;
      
    • Berarti CodeIgniter mengisi created_at dan updated_at.

  8. ✅ Memeriksa App.php

    • Ditemukan:

      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.

Share:

0 comments:

Post a Comment