¿ Por qué se cortou sen previo aviso o servizo de aloxamento o luns día 26 de marzo ?

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:

  1. 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.
  2. 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.
  3. 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.
  4. Algunhas apliacións non permitían subir arquivos debido ás novas restriccións de seguridade implantadas na nova plataforma.
  5. 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:

  1. 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.
  2. 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.
  3. 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.
  4. Reconfiguráronse as restriccións de seguridade axustando os parámetros para que a subida de arquivos volva a funcionar.
  5. 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.