MagnusBilling
Operations

Cómo configurar la zona horaria de PHP y del sistema en MagnusBilling

Sincroniza la zona horaria de Debian y de PHP utilizada por MagnusBilling y verifica ambas de forma segura.

ENPTES

Los informes, tareas y registros de MagnusBilling dependen de una hora coherente. Configura el sistema operativo y el PHP que sirve el panel con la misma zona IANA y verifica la aplicación después del cambio.

Objetivo

Definir una única zona horaria documentada para Linux y PHP, manteniendo el panel, los registros y las tareas programadas en el mismo reloj.

Instrucciones paso a paso

1. Localiza la configuración PHP activa

La línea de comandos y Apache o PHP-FPM pueden cargar archivos php.ini distintos. Comienza con la ruta de CLI y confirma la ruta del SAPI web de tu instalación.

PHP_INI=$(php --ini | sed -n 's|Loaded Configuration File: ||p')
printf 'CLI php.ini: %s\n' "$PHP_INI"
php --ini
grep -n 'date.timezone' "$PHP_INI" || true

2. Elige una zona IANA válida

Utiliza timedatectl para buscar en la base instalada. El ejemplo usa America/Argentina/Cordoba; sustitúyelo por la ubicación necesaria.

timedatectl list-timezones | less
timezone='America/Argentina/Cordoba'
timedatectl status

3. Actualiza date.timezone en php.ini

Haz una copia del archivo activo, sustituye una configuración comentada o activa y añade el valor si no existe.

cp -a "$PHP_INI" "$PHP_INI.before-timezone"

if grep -Eq '^[;[:space:]]*date.timezone[[:space:]]*=' "$PHP_INI"; then
  sed -i -E "s|^[;[:space:]]*date.timezone[[:space:]]*=.*|date.timezone = ${timezone}|" "$PHP_INI"
else
  printf '\ndate.timezone = %s\n' "$timezone" >> "$PHP_INI"
fi

4. Recarga el servicio web

MagnusBilling en Debian normalmente utiliza Apache. Si el entorno usa PHP-FPM, recarga el servicio exacto de esa versión.

apache2ctl configtest
systemctl reload apache2

# Example only when PHP-FPM is used
# systemctl list-units 'php*-fpm.service'
# systemctl reload php8.2-fpm

5. Actualiza la zona horaria del sistema Linux

timedatectl actualiza /etc/localtime de forma segura y registra la zona elegida.

timedatectl set-timezone "$timezone"
timedatectl status

6. Verifica PHP y el sistema operativo

Comprueba el valor de CLI, del sistema y de una página o informe de MagnusBilling. Si el panel difiere, identifica el php.ini cargado por el SAPI web.

php -r 'echo date_default_timezone_get(), PHP_EOL; echo date(DATE_ATOM), PHP_EOL;'
date --iso-8601=seconds
grep -n 'date.timezone' "$PHP_INI"

Precauciones operativas

  • Ejecuta los comandos como root o mediante sudo.
  • Registra la zona anterior antes de cambiarla.
  • Usa una ventana de mantenimiento porque las tareas cron y los informes pueden parecer cambiar de hora.
  • No dejes una página phpinfo pública en el servidor.
  • Cambiar la zona no reescribe timestamps históricos ya guardados en la base de datos.

Artículo original

Leer el artículo original archivado