En migraciones de aplicaciones entre sistemas operativos siempre suelen salir errores «menores» en este caso, al trasladar desde un servidor Windows en IIS a otro con AlmaLinux una instalación de phpBB todo parecía correcto, hasta que al navegar por diferentes mensajes no se cargaban ciertas imágenes…
Windows por defecto no suele dar problemas, le da igual mayúsculas o minúsculas en el sistema de ficheros y en IIS, aunque versiones más modernas si es posible habilitarlo:
fsutil.exe file SetCaseSensitiveInfo C:\directorio\ enable
Ahora bien, en Linux los nombres de archivos y directorios si lo son… por lo tanto miFoto.JPG es diferente a mifoto.JPG, miFoto.jpg… y aquí vienen los problemas en la migración.
Existen alternativas:
- Montar un sistema case-insensitive: fuse con opciones especiales vfat, ZFS con opción explicita…
- Modulo Apache mod_speling
Pero pueden tener impacto en rendimiento o seguridad por lo que otra alternativa es buscar en la base de datos las URLs y modificarlas, mediante un script que tengan en cuenta las rutas relativas, absolutas y alias de dominio. Para ello:
NOTA: se limita a directorios locales /imagenes y /galeria para no examinar otros posibles enlaces rotos externos o en directorios no necesarios
- Se obtiene el contenido de los posts de la base de datos
- Se extraen las URLs de las imágenes
- Para cada URL de imagen, si es relativa se intentan buscar varias rutas absolutas basadas en los alias del dominio y se comprueba si existe en el servidor
- Los resultados se muestran en una sencilla tabla para revisar y poder aplicar la corrección selectivamente
- Se genera un log de las modificaciones efectuadas
2025/05/14 – Actualizado el script y subido a Github