Page 1 sur 2

PHP 8.0

Publié : 03 sept. 2021, 16:12
par Bertrand

Par curiosité, je viens de basculer en PHP 8.0 et ... ça passe !
Il faudra tester en profondeur, mais pas le moindre warning à l'horizon pour le moment.
Une bonne nouvelle !

B.


Re: PHP 8.0

Publié : 05 sept. 2021, 22:09
par marsante

J'avais testé également sans avoir trop de temps en le déployant avec un conteneur docker et 7.4 ça marche, 8.0 la page login renvoie et bloque sur la page loginDo avec une erreur 500 lors de la validation de l'authentification. Je vais essayer de me faire une VM php8 du coup pour continuer les tests.


Re: PHP 8.0

Publié : 12 sept. 2021, 21:01
par Bertrand

Pas si simple en fait. J'étais logué lors du test et maintenant que je ne le suis plus ...

B.


Re: PHP 8.0

Publié : 16 sept. 2021, 10:56
par Indelog

Peso vu que sur la Debian stable actuel (Bullseye) on est encore à php 7.4 et que je suis les version Debian stable je me suis pas posé la question plus que ça (d'ailleurs tout semble bien fonctionner sur cette version pour ce qui est des fonctionnalités de base).

Si Debian reste la base recommandé pour une installation de MedShake EHR/EDC en production nous ne somme pas dans l'urgence. Par contre il va en effet commencer à y penser pour ne pas ce le prendre en plein dans le nez dans deux ans.


Re: PHP 8.0

Publié : 01 août 2022, 11:35
par marsante

Petite trouvaille qui pourrait aider à la mise à jour :

https://github.com/rectorphp/rector un logiciel qui permet de refactoriser le code php automatiquement (avec des erreurs à vérifier manuellement)

un exemple pour php8 https://getrector.org/blog/2020/11/30/s ... 8-in-diffs

Sinon question concernant les mots réservés, de ce que j'ai compris il faut éviter de les utiliser comme variables, est-ce que je pourrai donc remplacer toutes les variables match https://www.php.net/manual/fr/migration ... atible.php par autre chose, pour contribuer à mon niveau à la mise à jour ?

Bonne journée,


Re: PHP 8.0

Publié : 16 août 2022, 12:54
par marsante

J'ai continué mes tests avec une Ubuntu 22.04, php 8.1/mariadb 10.6 installé par défaut (ce qui devrait être le cas pour Debian 12) + php 7.4 et php 8.0

Sur une mise à jour php 7.4 vers php 8.0 : il n'y a plus d'erreurs bloquantes en ajoutant mes pulls requests.

Sur une installation fraîche php 8.0 il y a cette erreur :

Code : Tout sélectionner

Fatal error: Uncaught TypeError: call_user_func_array(): Argument #2 ($args) must be of type array, string given in /opt/ehr/vendor/altorouter/altorouter/AltoRouter.php on line 87
TypeError: call_user_func_array(): Argument #2 ($args) must be of type array, string given in /opt/ehr/vendor/altorouter/altorouter/AltoRouter.php on line 87
Call Stack
#	Time	Memory	Function	Location
1	0.0001	364440	{main}( )	.../install.php:0
2	0.0145	453232	AltoRouter->addRoutes( $routes = [0 => '/opt/ehr/config/routes.yml'] )	.../install.php:436

Sur une installation fraîche php 8.1 il y a cette erreur :

( ! ) Fatal error: Uncaught mysqli_sql_exception: Table 'medshakeehr.configuration' doesn't exist in /opt/ehr/class/msSQL.php on line 90
( ! ) mysqli_sql_exception: Table 'medshakeehr.configuration' doesn't exist in /opt/ehr/class/msSQL.php on line 90
Call Stack

Time Memory Function Location

1 0.0003 364648 {main}( ) .../install.php:0
2 0.0108 432664 msConfiguration::getDefaultParameterValue( $name = 'optionGeLoginPassMinLongueur' ) .../install.php:429
3 0.0108 432824 msSQL::sqlUniqueChamp( $sql = 'SELECT value FROM configuration WHERE name=\'optionGeLoginPassMinLongueur\' AND level=\'default\'' ) .../msConfiguration.php:51
4 0.0108 432824 msSQL::sqlQuery( $sql = 'SELECT value FROM configuration WHERE name=\'optionGeLoginPassMinLongueur\' AND level=\'default\'' ) .../msSQL.php:105
5 0.0108 432824 query( $query = 'SELECT value FROM configuration WHERE name=\'optionGeLoginPassMinLongueur\' AND level=\'default\'' ) .../msSQL.php:90
puis si on revient en php7.4 pour appuiyer sur le bouton Suivant avant de remettre en php8.1 on retrouve l'erreur en php8.0

Sur une mise à jour php7.4 à php8.1 : ras à part quand on veut imprimer ou forcer l'impression d'un document, on obtient à nouveau une erreur en rapport avec msSQL.php

( ! ) Fatal error: Uncaught mysqli_sql_exception: Data truncated for column 'type' at row 1 in /opt/ehr/class/msSQL.php on line 90
( ! ) mysqli_sql_exception: Data truncated for column 'type' at row 1 in /opt/ehr/class/msSQL.php on line 90
Call Stack

Time Memory Function Location

1 0.0009 363216 {main}( ) .../index.php:0
2 0.2705 470192 include( '/opt/ehr/controlers/print/pdfShow.php ) .../index.php:140
3 0.4195 736656 msPDF->savePDF( ) .../pdfShow.php:38
4 0.9679 1906992 msPDF->_savePrinted( ) .../msPDF.php:337
5 0.9679 1911464 msSQL::sqlInsert( $table = 'printed', $data = ['fromID' => '3', 'toID' => '3', 'type' => 'reglement', 'objetID' => '3', 'title' => '', 'value' => '\n\n <html>\n <head>\n <style>\n @page {\n margin: 170pt 50pt 40pt 50pt;\n font-family: Helvetica;\n }\n #header {\n position: fixed;\n left: 0;\n top: -150pt;\n right: 0;\n height: 140pt;\n margin-bottom: 40pt;\n border-bottom: 1pt solid #777;\n }\n\n h2 {\n '..., 'serializedTags' => 'a:68:{s:23:"AuteurInitial_birthname";s:5:"ADMIN";s:23:"AuteurInitial_firstname";s:7:"Michael";s:16:"AuteurInitial_id";s:1:"3";s:29:"AuteurInitial_identiteUsuelle";s:13:"Michael ADMIN";s:34:"AuteurInitial_identiteUsuelleTitre";s:13:"Michael ADMIN";s:22:"AuteurInitial_nomUsuel";s:5:"ADMIN";s:26:"UtilisateurActif_birthname";s:5:"ADMIN";s:26:"UtilisateurActif_firstname";s:7:"Michael";s:19:"UtilisateurActif_id";s:1:"3";s:32:"UtilisateurActif_identiteUsuelle";s:13:"Michael ADMIN";s:37:"UtilisateurActif_identiteUs'...], $trashHTML = FALSE ) .../msPDF.php:372
6 0.9681 1931824 msSQL::sqlQuery( $sql = 'insert into printed (fromID, toID, type, objetID, title, value, serializedTags) values (\'3\',\'3\',\'reglement\',\'3\',\'\',\'<html>\\n <head>\\n <style>\\n @page {\\n margin: 170pt 50pt 40pt 50pt;\\n font-family: Helvetica;\\n }\\n #header {\\n position: fixed;\\n left: 0;\\n top: -150pt;\\n right: 0;\\n height: 140pt;\\'... ) .../msSQL.php:218
7 0.9681 1931824 query( $query = 'insert into printed (fromID, toID, type, objetID, title, value, serializedTags) values (\'3\',\'3\',\'reglement\',\'3\',\'\',\'<html>\\n <head>\\n <style>\\n @page {\\n margin: 170pt 50pt 40pt 50pt;\\n font-family: Helvetica;\\n }\\n #header {\\n position: fixed;\\n left: 0;\\n top: -150pt;\\n right: 0;\\n height: 140pt;\\'... )

Passez un bel été


Re: PHP 8.0

Publié : 27 août 2022, 15:56
par Bertrand

Je suis passé sous Mint 21 et donc PHP 8.1.
A priori ce n'est pas la catastrophe pour toute la base.
J'ai fait des corrections ce jour, mergé pas mal de choses.

Je sors de mon trou, je découvre qu'Atom va être abandonné, j'ai donc migré vers VSCodium. Bref, j'essaye de remettre en route.
Voir sujet sur test des Pull Request. J'ai vraiment besoin d'aide pour trouver une méthodo qui me permette de travailler facilement.

B.


Re: PHP 8.0

Publié : 27 août 2022, 20:38
par marsante

Au passage aussi en buildant la branche master avec docker, il apparaît que wixel/gump dans cette version nécessite l'installation de php-bcmath


Re: PHP 8.0

Publié : 28 août 2022, 14:25
par Bertrand

Pour mémoire, je viens de le faire avecl e site medshake.net : tester à la recherche d'incompatibilité PHP8

Code : Tout sélectionner

find . -type f -iname '*.php' -exec /usr/bin/php -l {} \;

Source :
https://stackoverflow.com/questions/314 ... lity-check

Faut que je passe le dépôt de l'EHR dans cette moulinette !

B.


Re: PHP 8.0

Publié : 28 août 2022, 18:57
par marsante

j'ai fait mouliner le script sur un container php8.0 et php8.1, à part ./controlers/phonecapture/actions/inc-ajax-recevoirImages.php ras