Problemas detectados durante la instalación y solución encontradaDurante la instalación del sistema detecté varios problemas que impedían completar correctamente el proceso, incluso utilizando una base de datos completamente nueva.
Después de analizar el instalador, revisar el código PHP y realizar múltiples pruebas, logré identificar la causa principal de los errores.
=16Problemas encontrados
- La instalación terminaba indicando:
Código: ( Seleccionar Todo )⚠ La instalación quedó incompleta: se detectaron 18 errores.
- El sistema creaba el archivo install.lock incluso cuando la instalación había fallado.
- Al volver a ingresar al instalador aparecía un error 403 porque el propio instalador se bloqueaba.
- El usuario debía eliminar manualmente el archivo install.lock para volver a intentarlo.
- El instalador contabilizaba como errores situaciones que realmente eran advertencias normales de MySQL/MariaDB.
=16Análisis realizado
Se revisó completamente el proceso de instalación.
El problema no estaba relacionado con:
- PHP
- Permisos del servidor
- config.inc.php
- Conexión a MySQL
- Versión de MariaDB
Después de revisar el archivo responsable de crear la base de datos se detectó un problema lógico.
=16Causa real del problema
El instalador ejecutaba consultas similares a las siguientes:
CREATE TABLE usuarios (...)
ALTER TABLE usuarios ADD COLUMN avatar ...
ALTER TABLE usuarios ADD COLUMN rango ...
ALTER TABLE usuarios ADD COLUMN estado ...Sin embargo, muchas de esas columnas ya habían sido creadas anteriormente dentro del propio CREATE TABLE.
Posteriormente el instalador volvía a ejecutar:
ALTER TABLE ADD COLUMN ...MariaDB respondía correctamente con mensajes como:
Duplicate column name
Duplicate key name
Table already exists
Duplicate entryEstos mensajes no representan necesariamente un fallo crítico.
Simplemente indican que el elemento ya existe.
El problema era que el instalador contabilizaba cada uno de esos mensajes como un error fatal.
Por eso aparecía finalmente:
18 errores encontradoscuando en realidad gran parte de ellos correspondían a elementos ya existentes.
=16Segundo problema detectado
Al finalizar la instalación el sistema ejecutaba inmediatamente:
touch("install.lock");o su equivalente.
Luego mostraba la pantalla final.
Si existía cualquier advertencia durante el proceso, el instalador ya había quedado bloqueado.
Eso provocaba:
- Error 403
- Instalación incompleta
- Imposibilidad de continuar
=16Otros problemas encontrados
- No se verificaba correctamente si config.inc.php realmente se había escrito.
- No existía validación adecuada para mysqli.
- La conexión podía fallar sin informar el motivo exacto.
- El puerto MySQL no siempre era considerado.
- No existía tolerancia para instalaciones parcialmente ejecutadas.
- No se comprobaba correctamente la escritura del archivo install.lock.
- La instalación no era completamente repetible.
=16Solución aplicada
Se modificó el instalador para que:
- No considere como errores los elementos que ya existen.
- Detecte previamente tablas.
- Detecte columnas existentes.
- Detecte índices existentes.
- Detecte registros duplicados.
- Solo cree install.lock cuando toda la instalación finalice correctamente.
- Permita repetir una instalación fallida sin bloquear el sistema.
- Mejore el manejo de errores de MySQL y MariaDB.
- Valide correctamente la escritura de config.inc.php.
- Sea compatible con versiones actuales de PHP y MariaDB.
=16Resultado obtenido
Después de aplicar las correcciones:
- La instalación puede repetirse sin errores.
- No se generan falsos positivos.
- El sistema no se bloquea prematuramente.
- Los errores reales se distinguen claramente de simples advertencias.
- La experiencia de instalación es considerablemente más estable.
=16Recomendaciones para futuras versiones
- Utilizar migraciones versionadas en lugar de múltiples ALTER TABLE.
- Implementar comprobaciones mediante INFORMATION_SCHEMA antes de modificar tablas.
- Registrar todos los errores en un archivo install.log.
- Mostrar al usuario exactamente qué consulta SQL falló.
- Separar advertencias de errores críticos.
- Incorporar un modo de reparación ("Repair Installation") para instalaciones incompletas.
- Permitir actualizar instalaciones existentes sin generar errores por objetos previamente creados.
=16Conclusión
El origen del problema no estaba en el servidor, en PHP ni en MariaDB.
La causa principal correspondía a la lógica del instalador, que interpretaba como errores críticos respuestas normales del motor de base de datos al intentar crear nuevamente tablas, columnas e índices ya existentes.
Corrigiendo esa lógica y retrasando la creación del archivo de bloqueo hasta el final del proceso, el instalador se vuelve mucho más robusto, repetible y compatible con diferentes entornos de alojamiento.
solo THOR.



Facebook
Twitter
Reddit
Digg
del.icio.us
Tumblr
Pinterest
Blogger
Fark
LinkedIn
Mix
Google