porra-mundial-2026

# 🔄 Guía de Actualización ### ⚽ Porra Mundial 2026 --- **Actualizar tu instalación es rápido y seguro** Sube la nueva versión por FTP y las migraciones se aplican desde el navegador. [![Version](https://img.shields.io/badge/Guía-Actualización-blue?style=flat-square)](UPGRADE.md) [![Install](https://img.shields.io/badge/Guía-Instalación-green?style=flat-square)](INSTALL.md)

📋 Índice


⚠️ Antes de actualizar — Backup

[!CAUTION] Haz siempre una copia de seguridad antes de actualizar. Si algo sale mal, podrás restaurar tu instalación.

🗄️ Backup de la base de datos

Método Pasos
phpMyAdmin (recomendado) cPanel → phpMyAdmin → selecciona tu base de datos → pestaña Exportar → formato SQL → Continuar
cPanel Backup cPanel → BackupDownload a MySQL Database Backup → selecciona tu base de datos

📁 Backup de archivos críticos

Descarga por FTP al menos estos archivos y carpetas:

📦 Archivos a respaldar:
├── 📄 config/config.php         ← tu configuración personalizada
├── 📂 storage/                  ← logs, correos, caché, lock
│   ├── 📄 installed.lock
│   ├── 📂 logs/
│   └── 📂 mail/
└── 📄 VERSION                   ← para referencia de la versión actual

[!TIP] Guarda el backup en una carpeta con la fecha y versión actual, p.ej. backup-v0.1.0-2026-04-28/.


📥 Paso 1 — Descargar la nueva versión

  1. Ve a la sección Releases del repositorio.
  2. Descarga el archivo porra-mundial-2026-vX.X.X.zip de la nueva versión.
  3. Lee las notas de la release — pueden incluir instrucciones especiales para esa versión.

📤 Paso 2 — Subir los archivos por FTP

Conecta con tu cliente FTP y sube los archivos de la nueva versión sobre la instalación existente, sobreescribiendo los archivos del repositorio.

✅ Qué sobreescribir

Carpeta / Archivo Acción Motivo
📂 app/ ✅ Sobreescribir Código actualizado
📂 database/ ✅ Sobreescribir Nuevas migraciones SQL
📂 public/ ✅ Sobreescribir Assets y front controller actualizados
📂 vendor/ ✅ Sobreescribir Dependencias actualizadas
📂 bin/ ✅ Sobreescribir Scripts auxiliares
📄 .htaccess ✅ Sobreescribir Reglas de rewrite actualizadas
📄 composer.json ✅ Sobreescribir Definición de dependencias
📄 VERSION ✅ Sobreescribir Número de versión actualizado

🚫 Qué NO sobreescribir

Carpeta / Archivo Acción Motivo
📄 config/config.php 🚫 NO tocar Tu configuración personalizada — la release no incluye este archivo
📂 storage/ 🚫 NO tocar Tus logs, correos, caché y installed.lock

[!IMPORTANT] Las releases nunca incluyen config/config.php ni el contenido de storage/. Si subes la release tal cual, estos archivos no se sobreescribirán.


🚀 Paso 3 — Aplicar las migraciones

Tras subir los archivos, tienes dos opciones para aplicar la actualización:


🌐 Opción A — Desde el navegador

Abre cualquier URL de tu sitio en el navegador:

### 1️⃣ **🔍 Detección automática** Si hay migraciones pendientes, la aplicación te redirigirá automáticamente a `/install/upgrade`.
### 2️⃣ **🔐 Inicio de sesión** Inicia sesión con tu cuenta de **administrador**. Solo los administradores pueden ejecutar actualizaciones.
### 3️⃣ **✅ Confirmar la actualización** Revisa el resumen de migraciones pendientes y pulsa **Aplicar actualización**. El sistema: 1. Ejecuta **solo las migraciones pendientes** (las que no se han aplicado aún) 2. Actualiza el archivo `storage/installed.lock` con la nueva versión y la última migración aplicada 3. Te redirige al panel principal

[!NOTE] Si no hay migraciones pendientes (p.ej. una release que sólo corrige bugs en PHP/CSS/JS), el sitio funcionará con normalidad sin necesidad de pasar por la pantalla de upgrade.


💻 Opción B — Desde la línea de comandos (CLI)

Si tienes acceso SSH al servidor (o ejecutas la aplicación en un entorno con terminal), puedes usar el script bin/upgrade.php:

Modo interactivo (pide confirmación)

php bin/upgrade.php

Ejemplo de salida:

╔══════════════════════════════════════════╗
║   Porra Mundial 2026 — Actualización    ║
╚══════════════════════════════════════════╝

  Versión instalada : 0.1.0
  Versión nueva     : 0.2.0
  Última migración  : 0003
  Migraciones hasta : 0005

  Migraciones pendientes:
    • 0004_add_notifications.sql
    • 0005_add_user_preferences.sql

¿Aplicar la actualización? [s/N] s
Aplicando migraciones de base de datos…
  ✓ 0004_add_notifications.sql
  ✓ 0005_add_user_preferences.sql
  2 migración(es) aplicada(s).

✓ Actualización completada — versión 0.2.0.

Modo automático (sin confirmación)

php bin/upgrade.php --force

Ideal para scripts de despliegue automatizado o integración con pipelines CI/CD.

Códigos de salida

Código Significado
0 Éxito — actualizaciones aplicadas o nada pendiente
1 Error — la app no está instalada o falló una migración

[!TIP] El script CLI es útil para automatizar actualizaciones en pipelines de despliegue. Por ejemplo, tras un git pull o un despliegue FTP automático, basta con ejecutar php bin/upgrade.php --force para aplicar las migraciones pendientes.


✅ Verificar la actualización

Tras completar el proceso, verifica que todo funciona:

Comprobación Cómo
🌐 Página principal carga Abre tu dominio en el navegador
🔐 Login funciona Inicia sesión con tu cuenta
📋 Panel de admin accesible Ve al panel de administración
📄 Versión actualizada Comprueba que el archivo VERSION muestra el nuevo número

[!TIP] Si usas caché del navegador, haz un hard refresh (Ctrl + Shift + R o Cmd + Shift + R) para cargar los assets actualizados.


⏪ Rollback — Revertir a la versión anterior

Si algo sale mal durante o después de la actualización:

### 1️⃣ **📁 Restaurar archivos** Sube por FTP los archivos de la versión anterior (del backup que hiciste), asegurándote de incluir: - `config/config.php` - `storage/installed.lock` - Todo el código de la versión anterior
### 2️⃣ **🗄️ Restaurar la base de datos** Desde phpMyAdmin: 1. Selecciona tu base de datos 2. Ve a la pestaña **Importar** 3. Sube el archivo `.sql` del backup 4. Marca la opción para eliminar tablas existentes si es necesario
### 3️⃣ **✅ Verificar** Abre tu dominio y comprueba que todo funciona con la versión anterior.

[!WARNING] El rollback de base de datos reemplaza todos los datos al estado del backup. Cualquier dato introducido después del backup se perderá (usuarios nuevos, apuestas, etc.).


❓ Preguntas frecuentes

🤔 ¿Puedo saltar versiones? (p.ej. de v0.1.0 a v0.3.0) **Sí.** Las migraciones SQL son incrementales y se aplican en orden. El sistema detecta cuáles faltan y las ejecuta todas en secuencia, sin importar cuántas versiones hayas saltado.
🤔 ¿Cuál es la diferencia entre actualizar desde el navegador y desde CLI? Ambos métodos hacen lo mismo: ejecutan las migraciones de base de datos pendientes y actualizan el archivo `storage/installed.lock`. | | 🌐 Navegador | 💻 CLI (`bin/upgrade.php`) | |:-|:-------------|:--------------------------| | **Acceso** | Solo necesitas un navegador | Necesitas acceso SSH o terminal | | **Autenticación** | Requiere login de admin | Sin autenticación (acceso al servidor = confianza) | | **Automatización** | Manual | Se puede integrar en scripts de despliegue con `--force` | | **Ideal para** | Hostings compartidos (FTP) | Servidores con SSH, pipelines CI/CD |
🤔 ¿Qué pasa si la actualización falla a mitad? Las migraciones se ejecutan en orden. Si una falla: 1. Las migraciones anteriores ya estarán aplicadas. 2. La aplicación mostrará un error con la migración que falló. 3. Puedes corregir el problema y volver a intentarlo — el sistema retomará desde donde falló. 4. Si no puedes corregirlo, haz rollback al backup.
🤔 ¿Necesito volver a configurar SMTP, captcha o MFA tras actualizar? **No.** Toda la configuración se guarda en `config/config.php` y en la base de datos. Al no tocar estos archivos durante la actualización, tu configuración se conserva intacta.
🤔 ¿Se pierden los datos de los usuarios al actualizar? **No.** Las migraciones sólo añaden o modifican la estructura de las tablas. Los datos existentes (usuarios, apuestas, configuración) se conservan.
🤔 ¿Cómo sé qué versión tengo instalada? Abre el archivo `VERSION` en la raíz de la instalación. Contiene el número de versión actual (p.ej. `0.1.0`).

📖 **¿Primera instalación?** → [`INSTALL.md`](/docs/INSTALL.html) 🏠 **Volver al README** → [`README.md`](/) --- _⚽ Porra Mundial 2026 — Hecho con pasión futbolera_