Migrer une vieille version d’application délaissée n’est pas chose facile… Cela passe parfois par plusieurs étapes, comme ici avec un LimeSurvey 3.15 ayant quelques années et qui sera mis à jour vers ma version actuelle 6.1.8.

Il existe une version mineure LTS 3.28.66 supportée jusque juin 2023. Plus de version LTS après cela!

L’OS utilisé passant à Ubuntu 22.04, il faut déjà trouver un intermédiaire pour faire fonctionner la version actuelle et la mettre à jour. La version installée ne supporte uniquement que PHP 7.0.

Le but à atteindre étant d’utiliser la dernière version de l’application 6.1.8 et sa version PHP supportée 8.0.

Phases de migration LimeSurvey

  1. Migrer en dernière version LTS 3.28.66 (support PHP 7.4 max)
  2. Mise à jour de PHP 7.0 vers 7.4
  3. Migrer vers 5.6.31 (supports PHP 7.2.5 to 8.0.x)
  4. Migrer vers 6.1.8 (requires PHP 7.4.x or newer)
  5. Mise à jour de PHP 7.4 vers 8.0

Pré-requis

  1. On va devoir utiliser une sandbox docker ayant différentes versions de PHP pour faire la migration de l’application du à l’incompatibilité entre les version PHP de l’app et la nouvelle machine
  2. On va ajouter un dépôt pour gérer les versions de PHP qui ne sont pas dans le dépôt ubuntu https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ jammy main

Pour utiliser docker sous Windows, je vous réfère à mon article sur Docker Desktop.

Export/Import base de donnée LimeSurvey actuel

Export :

cd /var/www
sudo tar -czf /home/b/lime-prod.tgz limesurvey
sudo mysqldump --defaults-file=/etc/mysql/debian.cnf limesurveydb | gzip --to-stdout > /home/b/lime-prod.sql.gz

import :

scp new-srv:lime-prod.* ./
zcat lime-prod.sql.gz | sudo mysql lime
cd /data/www
sudo tar -xf /home/b/lime-prod.tgz
sudo chown -R www-data limesurvey/tmp limesurvey/upload limesurvey/application/config

Migrer LimeSurvey en dernière version LTS

Sur la sandbox docker, ajouter le support de PHP 7.0 et 7.4 via un dépôt supplémentaire.

La version Version 3.15 ne supportant pas php 7.4, il faut passer par le 7.0 pour mettre à jour vers la 3.28.66 et puis essayer de passer php en 7.4

Situation fonctionnelle

  • Ajout du dépôt
sudo add-apt-repository ppa:ondrej/php
  • ajout des paquets
sudo apt update
sudo apt install php7.0 php7.0-curl php7.0-mysql php7.0-mbstring php7.0-zip php7.0-gd php7.0-ldap php7.0-simplexml
sudo apt install php7.4 php7.4-curl  php7.4-mysql  php7.4-mbstring  php7.4-zip  php7.4-gd  php7.4-ldap  php7.4-simplexml
  • Switch du PHP par défaut :
sudo update-alternatives --config php
There are 3 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.1   81        auto mode
  1            /usr/bin/php7.0   70        manual mode
  2            /usr/bin/php7.4   74        manual mode
  3            /usr/bin/php8.1   81        manual mode

Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/bin/php7.0 to provide /usr/bin/php (php) in manual mode
  • Vérifier : php -v
  • Activer dans apache la version à utiliser, ici 7.0 d’abord:
sudo a2dismod php8.1
sudo a2enmod php7.0
sudo systemctl restart apache2
  • Importer les fichiers tgz + db
zcat limesurvey.sql.gz | mysql lime
cd /data/www
tar -xf lime-prod.tgz
  • changer les accès db dans application/config/config.php

Pour le debug limesurvey :
application/config/config.php
‘debug’=>2,

Migration de LimeSurvey 3.15.3 vers 3.28.66

Notes de migration anciennes version

cd
wget https://download.limesurvey.org/latest-3.x-LTS/limesurvey3.28.66+230719.zip
cur_version=3.15.3
cd /data/www
sudo mv limesurvey limesurvey-$cur_version
sudo unzip /home/b/limesurvey3.28.66+230719.zip
sudo cp limesurvey-$cur_version/application/config/config.php limesurvey/application/config/
sudo cp -ar limesurvey-$cur_version/upload limesurvey/
sudo chown -R www-data limesurvey/tmp limesurvey/upload limesurvey/application/config

Upgrade DB en console :

sudo -u www-data php limesurvey/application/commands/console.php updatedb
Update mysql:host=localhost;port=3306;dbname=lime_stag; with prefix :lime_ from 355 to 366
Database has been successfully upgraded to version 366

Après connexion à l’interface admin, pas de message pour upgrade la DB. Et vérifier si erreur template.

==> Etat OK, customisation logo, templates formulaire également.

Switch de PHP 7.0 vers PHP 7.4

Pour les versions suivantes, la version minimum est PHP 7.2.5 et il faut donc abandonné PHP7.0. Allons directement en 7.4 qui est censé être supporté par la version 3.28.66….

sudo update-alternatives --config php
There are 3 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
  0            /usr/bin/php8.1   81        auto mode
* 1            /usr/bin/php7.0   70        manual mode
  2            /usr/bin/php7.4   74        manual mode
  3            /usr/bin/php8.1   81        manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/php7.4 to provide /usr/bin/php (php) in manual mode
Time: 0h:00m:03s
php -v
sudo a2dismod php7.0
sudo a2enmod php7.4
sudo systemctl restart apache2

==> Etat OK également!

Migrer LimeSurvey vers 5.6.31

Cette version 5.6.31 supporte PHP 7.2.5 à 8.0.x.

cd
wget https://download.limesurvey.org/latest-5.x/limesurvey5.6.31+230718.zip
cur_version=3.28.66
sudo mysqldump lime | gzip --to-stdout > lime-${cur_version}.sql.gz
cd /data/www
sudo mv limesurvey limesurvey-$cur_version
sudo unzip /home/b/limesurvey5.6.31+230718.zip
sudo cp limesurvey-$cur_version/application/config/config.php limesurvey/application/config/
sudo cp -ar limesurvey-$cur_version/upload limesurvey/
sudo chown -R www-data limesurvey/tmp limesurvey/upload limesurvey/application/config

On est à la version 366 de la base de données pour rappel.

Update en console possible :

sudo -u www-data php limesurvey/application/commands/console.php updatedb
Update mysql:host=localhost;port=3306;dbname=lime; with prefix :lime_ from 366 to 497
Database has been successfully upgraded to version 497
Time: 0h:00m:18s

Si erreur pour faire l’update entre 418 et 497, voir si bien en php 7.4 et recommencer depuis la 3.28.66. Un oubli arrive vite…

Migrer LimeSurvey vers 6.1.8

Cette version 6.1.8 de Limesurvey nécessite PHP 7.4.x ou plus.

Upgrade 5.6.31 vers 6.1.8

Attention l’interface est très différente, à voir l’impacte sur les utilisateurs de l’application !

cd
wget https://download.limesurvey.org/latest-master/limesurvey6.1.8+230717.zip
cur_version=5.6.31
sudo mysqldump lime | gzip --to-stdout > lime-${cur_version}.sql.gz
cd /data/www
sudo mv limesurvey limesurvey-$cur_version
sudo unzip /home/b/limesurvey6.1.8+230717.zip
sudo cp limesurvey-$cur_version/application/config/config.php limesurvey-$cur_version/application/config/security.php limesurvey/application/config/
sudo cp -ar limesurvey-$cur_version/upload limesurvey/
sudo chown -R www-data limesurvey/tmp limesurvey/upload limesurvey/application/config

On est à la version 497 de la base de données

Update en console possible :

sudo -u www-data php limesurvey/application/commands/console.php updatedb
Update mysql:host=localhost;port=3306;dbname=lime; with prefix :lime_ from 497 to 607
Database has been successfully upgraded to version 607
Time: 0h:00m:04s

Switch de PHP 7.4 vers PHP 8.0

Pour les versions suivantes de LimeSurvey, la version minimum est PHP 7.4.x. Pas d’infos officielles sur la version maximal, mais un information sur le forum :

8.1 and 8.2 are not supported, yet.
The maximum PHP version currently supported by LimeSurvey 5 is 8.0.x.

Il faut donc tester… Résultat des tests :

  • PHP 7.4 est OK
  • PHP 8.0 est OK
  • PHP 8.1 ne semble pas supporté!!!
  • PHP 8.2 non testé

Il faut donc utiliser PHP 8.0.

Installer :

sudo apt install php8.0 php8.0-curl  php8.0-mysql  php8.0-mbstring  php8.0-zip  php8.0-gd  php8.0-ldap  php8.0-simplexml
sudo a2dismod php7.4
sudo a2enmod php8.0
sudo systemctl restart apache2
sudo update-alternatives --config php
There are 4 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
  0            /usr/bin/php8.1   81        auto mode
  1            /usr/bin/php7.0   70        manual mode
* 2            /usr/bin/php7.4   74        manual mode
  3            /usr/bin/php8.0   80        manual mode
  4            /usr/bin/php8.1   81        manual mode

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/php8.0 to provide /usr/bin/php (php) in manual mode
php -v

Conclusion

La tâche n’était pas simple sans avoir une manipulation officielle d’un changement de version application + PHP. Il faut donc faire quelques raté pour en arriver à cette manipulation. Espérant aider le plus grand nombre!

Summary
LimeSurvey migration 3.15 vers 6.1.8
Article Name
LimeSurvey migration 3.15 vers 6.1.8
Description
Procédure de migration LimeSurvey détaillant les étapes et versions de PHP nécessaire pour atteindre la version à jour en 6.1.8
Author