Contexto
Tal e como se detallou no documento descritivo da actualización, os cambios realizados no servizo de aloxamento de páxinas web foron moi numerosos e inevitablemente van a ter impacto nas páxinas aloxadas na actualidade, sobre todo no relacionado coa nova versión de PHP (5.2) e coa nova codificación da base de datos MySQL (utf-8).
Problemas detectados
Durante as primeiras horas do luns 26 de marzo, o equipo da Área de Sistemas e Comunicacións detectou os seguintes problemas:
- Algunhas aplicacións PHP estaban a visualizar incorrectamente os caracteres acentuados porque seguían a comunicarse coa base de datos utilizando a codificación latin1. Exemplos disto son Coppermine Photo Gallery e algunhas versións vellas Drupal e Moodle. O perigo non era tanto a visualización dos caracteres acentuados, senón o feito de que algunhas destas aplicacións estaban a almacenar a información na base de datos cunha codificación incorrecta.
- A nova ferramenta de administración de base de datos, phpMyAdmin, estaba a ofrecer un rendemento pésimo cando o número de tablas era alto. Esta situación prodúcese debido a unha deficiencia no rendemento por parte de MySQL no acceso ao esquema information_schema que devolve os metadatos da base de datos. Tal deficiencia é un bug recoñecido na actualidade por MySQL (#19588) que está previsto resolverse nas vindeiras versións.
- Algúns dos portais baseados en Drupal que se parchearon de oficio para evitar unha incompatibilidade no manexo das sesión relacionada coa nova versión de PHP non quedaron correctamente parcheados.
- Algunhas apliacións non permitían subir arquivos debido ás novas restriccións de seguridade implantadas na nova plataforma.
- Algunhas aplicacións preparadas para versións anteriores de PHP 5.2 amosan avisos relacionados con variables non definidas (undefined variable). Esto débese a que a partir da versión 5.0 de PHP é obrigatorio declarar todas as variables antes de utilizalas.
Medidas correctivas
Dada a entidade dalgúns destes problemas decidiuse cortar o servizo e implementar as seguintes accións:
- Facer que, por defecto, todas as conexións coa base de datos establezan a codificación utf-8. Para elo configurouse o servidor MySQL para que cada conexión entrante faga un SET NAMES 'utf8'. A pesar deste cambio algunhas aplicacións poden seguir amosando incorrectamente os caracteres acentuados porque están preparadas para codificacións iso-8859-1 ou iso-8859-15. Nas próximas horas proporcionaranse neste portal guías explicativas sobre este tema.
- Actualizouse a versión de phpMyAdmin por unha que non faga uso intensivo do esquema information_schema. Deste xeito o problema de rendemento de phpMyAdmin quedou subsanado.
- Volveronse a parchear de oficio a maior parte das páxinas baseadas na ferramenta Drupal. Deste xeito, a maioría destas páxinas deberían funcionar correctamente.
- Reconfiguráronse as restriccións de seguridade axustando os parámetros para que a subida de arquivos volva a funcionar.
- Investigáronse posibles solucións para os avisos relacionados con variables non definidas. Neste caso, desgracidamente, non é posible aplicar de oficio parches correctivos. As aplicacións que amosen este tipo de avisos deben ser actualizadas dun dos seguintes xeitos:
- Declarando as variables antes de utilizalas.
- Chamando á función isset('<variable>') para comprobar se a variable está definida antes de utilizala.
- Se a aplicación é xenérica, por exemplo software libre, descargar unha versión compatible con PHP 5.2 e actualizala.