# Instalación de Liga360 en cPanel

## 1. Requisitos del hosting

Verifica en cPanel que el dominio use PHP 8.3 o superior y que estén activas las extensiones PDO MySQL, mbstring, fileinfo e iconv. El servidor debe utilizar Apache y permitir reglas `.htaccess`.

## 2. Crear la base de datos

En **Bases de datos MySQL®** de cPanel:

1. Crea una base de datos, por ejemplo `usuario_liga360`.
2. Crea un usuario MySQL con una contraseña robusta.
3. Asocia el usuario a la base de datos.
4. Otorga **todos los privilegios** a ese usuario.
5. Conserva el nombre completo de la base, usuario y contraseña. En muchos hostings cPanel agrega el prefijo de la cuenta.

No es necesario importar manualmente el SQL cuando se utiliza `install.php`; el instalador lee `database/liga360.sql`.

## 3. Editar config.php

Abre `config.php` y ajusta únicamente sus valores:

```php
'app' => [
    'name' => 'Liga360',
    'url' => 'https://tudominio.com',
    'base_path' => '',
    'timezone' => 'America/Mexico_City',
    'debug' => false,
    'maintenance' => false,
    'contact_email' => 'contacto@tudominio.com',
],
'db' => [
    'host' => 'localhost',
    'port' => 3306,
    'name' => 'usuario_liga360',
    'user' => 'usuario_liga360',
    'pass' => 'TU_CONTRASENA_SEGURA',
    'charset' => 'utf8mb4',
],
```

### Instalación en una subcarpeta

Para `https://tudominio.com/liga360` usa:

```php
'url' => 'https://tudominio.com/liga360',
'base_path' => '/liga360',
```

No agregues una diagonal al final.

## 4. Subir los archivos

Comprime o sube el contenido de la carpeta `Liga360` mediante FTP o el Administrador de archivos de cPanel.

- En el dominio principal, coloca los archivos en `public_html`.
- En una subcarpeta, colócalos en `public_html/liga360`.
- Conserva el archivo `.htaccess`; activa la visualización de archivos ocultos en cPanel si fuera necesario.

## 5. Permisos recomendados

- Carpetas: `755`.
- Archivos: `644`.
- `storage/cache`: debe permitir escritura a PHP.
- `uploads`: debe permitir escritura a PHP.

En la mayoría de los hostings basta con `755`. Si el instalador no puede crear `storage/installed.lock`, consulta al proveedor antes de utilizar permisos más abiertos.

## 6. Ejecutar el instalador

Visita:

```text
https://tudominio.com/install.php
```

Captura:

- Nombre del administrador.
- Correo válido.
- Contraseña de al menos 10 caracteres.

El instalador:

1. Ejecuta el único archivo `database/liga360.sql`.
2. Crea tablas, relaciones, permisos y datos demostrativos.
3. Genera la contraseña con `password_hash(PASSWORD_DEFAULT)`.
4. Crea `storage/installed.lock` para impedir una segunda instalación.

## 7. Acciones posteriores obligatorias

1. Inicia sesión y confirma que el panel cargue correctamente.
2. Elimina o renombra `install.php`.
3. Mantén `app.debug` en `false`.
4. Obliga el uso de HTTPS desde cPanel.
5. Sustituye el correo y datos de demostración.
6. Crea un respaldo inicial de archivos y base de datos.

## 8. Prueba rápida

Comprueba estas rutas:

- `/`
- `/ligas`
- `/calendario`
- `/posiciones`
- `/jugadores`
- `/mercado`
- `/noticias`
- `/registro`
- `/ingresar`
- `/panel`

En el panel crea un registro de prueba, edítalo, elimínalo y valida la carga de una imagen.

## 9. Problemas comunes

### Error de conexión a la base de datos

Revisa host, prefijos de cPanel, usuario, contraseña y privilegios. Algunos proveedores usan un host diferente de `localhost`.

### Error 404 en URLs amigables

Confirma que `.htaccess` se haya subido, que Apache permita `mod_rewrite` y que `AllowOverride` esté habilitado por el proveedor.

### Error 500

Cambia temporalmente `app.debug` a `true` solamente durante el diagnóstico, revisa el registro de errores de cPanel y vuelve a dejarlo en `false`.

### No se cargan archivos

Verifica permisos de `uploads`, límites de PHP y que el archivo sea JPG, PNG, WEBP o PDF dentro del tamaño configurado.

### El estilo o las rutas apuntan a otro lugar

Corrige `app.url` y `app.base_path`. Después limpia el contenido de `storage/cache`, sin borrar `.gitkeep`.

## 10. Instalación manual alternativa

Solo cuando `install.php` no pueda ejecutar el SQL:

1. Importa `database/liga360.sql` desde phpMyAdmin.
2. Abre temporalmente `install.php` para crear el administrador; si las tablas ya existen, el SQL volverá a crearlas y borrará los datos.

Por esa razón, para una instalación manual con datos ya cargados conviene crear el primer usuario con un hash generado por PHP y después crear manualmente `storage/installed.lock`. El flujo recomendado sigue siendo el instalador web sobre una base vacía.
