Comment mettre à jour EasyPhp 14.1 vers 16.1 ?

De ORSWiki
Aller à : navigation, rechercher

Voici comment passer correctement (ou presque !) à la nouvelle version d'EasyPhp Devserver 16.1, en récupérant vos bases de données (procédure testée avec succès sur un Windows 7 64 bits).

Faites une sauvegarde de vos bases de données

Cela permettra en outre de vérifier que les sauvegardes fonctionnent bien. Vous pouvez le faire via phpMyAdmin ou sinon en ligne de commande si la base est trop grosse :

 \EasyPHP-DevServer-14.1VC11\binaries\mysql\bin\mysqldump -uroot -pMonMotDePasseRoot -D MaBase > sauvegarde.sql

Si, à ce stade, vous pouvez recharger ces sauvegardes en tant que copies de base de données, alors plus rien de grave ne peut vous arriver par la suite, quoi qu'il arrive.

Désinstallez EasyPHP-DevServer-14.1VC11 via unins000.exe

Si vous ne le faites pas, le nouveau serveur Apache ne pourra pas se lancer (car il faut retirer les chemins de l'ancienne version 14 de la variable d'environnement PATH). Le désinstallateur se trouve dans le dossier d'EasyPhp.

Téléchargez et installez la nouvelle version d'EasyPhp

Elle se trouve ici : www.easyphp.org : EasyPHP-Devserver-16.1.1-setup.exe

Si vous passez ce fichier d'installation à VirusTotal, celui-ci affirme qui est complètement vérolé par cela :

 Risktool.W32.Hideexec!c
 W32/Trojan.TNNE-3866
 Riskware/HideExec
 Win32.Application.Agent.C8I24Q
 Artemis
 Unwanted-Program ( 004bf1a51 )
 Riskware.Win32.HideExec.cwwtxz
 Malware.Undefined!8.C (cloud:0Ebj8LLOQZ)
 AegisLab : Risktool.W32.Hideexec!c : 20170217
 Cyren : W32/Trojan.TNNE-3866 : 20170217
 Fortinet : Riskware/HideExec : 20170217
 GData : Win32.Application.Agent.C8I24Q : 20170217
 K7AntiVirus : Unwanted-Program ( 004bf1a51 ) : 20170217
 K7GW : Unwanted-Program ( 004bf1a51 ) : 20170217
 Kaspersky : not-a-virus:RiskTool.Win32.HideExec.bc : 20170217
 McAfee-GW-Edition : Artemis : 20170216
 NANO-Antivirus : Riskware.Win32.HideExec.cwwtxz : 20170217
 Rising : Malware.Undefined!8.C (cloud:0Ebj8LLOQZ) : 20170217
 Yandex : Riskware.HideExec! : 20170217

Le rapport complet est ici :

https://www.virustotal.com/fr/file/11a1accb700291e7d119217651310b3af7d3d9c97103c66fb432076dcacc0080/analysis/

Mais, pour une fois, ne faites pas attention, après de multiples recherches, il semble qu'il y ait un composant qui provoque un faux positif sur pas moins de 10 des principaux éditeurs d'antivirus, tout de même (il ressemble à un virus, mais sans plus, j'espère que ce n'est pas la NSA qui nous espionne ! la communauté d'EasyPhp devrait tirer cela au clair, ce serait plus sérieux, je ne connais pas d'autre logiciel dans ce cas de figure délicat).

Mettez à jour phpMyAdmin vers la version 4.6.6 !

Aussi invraisemblable que cela paraisse, la version 4.5.5.1 de phpMyAdmin est totalement inutilisable, car elle ne voit pas les relations qui existent pourtant bien dans la base de données, ce qui est un comble, pour une interface de SGBDR, le R étant pour Relationnel, tout de même ! Téléchargez donc phpMyAdmin version 4.6.6 ici :

https://files.phpmyadmin.net/phpMyAdmin/4.6.6/phpMyAdmin-4.6.6-all-languages.zip

Puis recopiez le module : eds-module.php depuis l'ancien dossier d'installation phpMyAdmin 4.5.5.1 et mettez _ devant l'ancien eds-module.php

Vérifiez la présence des anciennes tables systèmes

Si par exemple vous lancez cette requête :

 show variables like '%collation%'

et que vous obtenez l'erreur suivante :

 Table 'performance_schema.session_variables' doesn't exist

alors lancez cette commande dans le dossier des binaires de MySql, qui se trouve ici :

\EasyPHP-Devserver-16.1\eds-binaries\dbserver\mysql5711x86x[?]\bin\mysql.exe

   mysql_upgrade -u root -p --force

Il y a quelques messages d'erreur qui s'affichent, mais à priori rien de grave, et cette fois tout à l'air de fonctionner comme avant, vous pouvez tester à nouveau la requête, vous obtenez maintenant :

 collation_connection = utf8mb4_general_ci
 collation_database = latin1_swedish_ci
 collation_server = latin1_swedish_ci

Changer l'interclassement du serveur

Si vous voulez définir l'interclassement (collation en anglais) par défaut de vos nouvelles bases de données (collation_database et collation_server), en changeant de latin1_swedish_ci vers utf8_general_ci, voici comment faire : Ajoutez à la section [mysqld] dans le fichier my.ini les lignes suivantes :

 init_connect='SET collation_connection = utf8_general_ci'
 init_connect='SET NAMES utf8'
 character-set-server=utf8
 collation-server=utf8_general_ci
 skip-character-set-client-handshake

Redémarrez MySql, la requête "show variables like '%collation%'" donne maintenant :

 collation_connection = utf8mb4_general_ci
 collation_database = utf8_general_ci
 collation_server = utf8_general_ci

Si vous créez une nouvelle base de données, elle aura bien maintenant l'interclassement utf8_general_ci, et non plus latin1_swedish_ci.

L'astuce vient de là :

http://kosalads.blogspot.fr/2013/03/mysql-55-how-to-change-mysql-default.html

Rechargez vos bases

Vous pouvez le faire via phpMyAdmin ou sinon en ligne de commande, si la base est volumineuse :

 \mysql\bin\mysql.exe -uroot -pMonMotDePasseRoot -D MaBase < sauvegarde.sql

Voilà, tout fonctionne bien... sauf un tout petit détail : si vous avez une table qui fait plus de 4 Go, cette nouvelle installation ne permet plus de recharger une telle base de données (on obtient l'erreur "Table x is full", ERROR 1114 HY000), alors que la précédente version d'EasyPhp (14.1.1) le pouvait très bien.

J'ai passé des heures à chercher une solution à ce problème, sans succès. J'ai téléchargé une mise à jour de MySql, mais je n'ai pas réussi à l'intégrer à EasyPhp : j'ai bien réussi à la faire apparaître dans la liste des serveurs de base de données, avec les deux versions (celle d'origine et la plus récente), mais je n'ai pas trouvé comment faire en sorte que le bouton du Dashboard démarre l'une ou l'autre des versions de MySql, aucune des deux ne fonctionne plus après. Bref, j'ai réinstallé EasyPhp 14.1.1 et j'ai simplement mis à jour PhpMyAdmin (en restant avec MySql 5.6 donc), bah, de toutes façons, elle était complètement vérolée cette installation...