Project

General

Profile

Anomalie #4348

php 7.4 alpha1

Added by Franck D about 1 month ago. Updated 10 days ago.

Status:
Nouveau
Priority:
Bas
Assignee:
-
Category:
-
Target version:
Start date:
06/15/2019
Due date:
% Done:

0%

Resolution:
Navigateur:

Description

Hello, Juste pour dire que je commence à faire des tests avec php 7.4 alpha1
Donc, sous easyphp avec windonws 10 (1903)
Apache 2.4.39 x86 - PHP 7.4.0 alpha1
MySQL 5.7.17
MySQL Administration : PhpMyAdmin 4.9.0.1
Firefox 67.0.2
J'ai activer tous les logs pour les tests

J'ai trouver plusieurs problèmes mais je n'ai pas de log...
Exemple,
- Impossible de faire apparaitre le menu "dev", l'unique info que j'ai, c'est : Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau.
- Impossible de faire une sauvegarde de la bdd

J'ai warning qui apparait quand je souhaite vider le cache:
Warning: time() expects exactly 0 parameters, 1 given in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\test14\ecrire\public\composer.php(93) : eval()'d code on line 33

J'ai un autre warning qui apparait uniquement dans les logs (voir la copie d'ecran 1)

Il y a un deprecated qui apparait partout, y compris au moment de l'installation et cela même si j'ai pas activer les log dans mes_options
Deprecated: Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\test12\ecrire\inc\utils.php on line 2651

php7_4_alpha1.jpg View (352 KB) Franck D , 06/15/2019 06:21 PM

copie d_écran2.jpg View (376 KB) Franck D , 07/08/2019 07:25 PM

Associated revisions

Revision 24320 (diff)
Added by Matthieu Marcillaud about 1 month ago

Ticket #4348 : Correction pour PHP 7.4 (Left-associative ternary operator deprecation)

On rend plus lisible l’expression du coup en passant.

History

#1 Updated by marcimat 🌈 about 1 month ago

Pour le time, il y en a au moins un qui vient de prive/objets/info/auteurs.html ;

[(#BOUTON_ACTION{<:info_admin_etre_webmestre:>,[(#URL_ACTION_AUTEUR{etre_webmestre,[(#REM|time)],#SELF})]})]

Cela génère time('')

Un second vient de prive/squelettes/inclure/admin_vider_cache.html ;

#SET{cache_inhib,#CONFIG{cache_inhib}|sinon{0}|>{#REM|time}|oui}

En alternative de #REM|time, peut être #EVAL{time()} ?

#2 Updated by marcimat 🌈 about 1 month ago

Le warning sur time('') (nombre d’arguments incorrects) apparaît en PHP 7.3.
Mais… je ne vois rien qui indique ce changement dans la doc de PHP.
En tout cas, ça ne génère pas ces warning sur des fonctions utilisateurs.

Si on met `declare(strict_types = 1);`, le Warning devient une `Fatal error: Uncaught ArgumentCountError: time()`,
mais pareil, aucune erreur sur les appels erronés de fonctions utilisateurs…

Je suppose donc que certaines fonctions PHP ont vu leur comportement changer si le nombre d’argument n’est pas correct.

#3 Updated by marcimat 🌈 about 1 month ago

Alors donc, les warning sur ces fonctions internes PHP semblent arriver avec https://github.com/php/php-src/commit/ff6f41c94 et sur pourquoi on n’en trouve pas dans les fonctions utilisateurs, il y a une petite explication là https://externals.io/message/102553#102560

#4 Updated by Franck D 13 days ago

yop :)
Alors ce soir j'ai refais une nouvelle installation pour faire des tests, ce qui fait que je suis en svn 24321
Donc, juste pour dire que ton commit à fait disparaitre: Deprecated: Unparenthesized `a ? b : c ? d : e`....

Par contre, j'ai toujours le warning concernant le vidage du cache (logique)
Mais j'ai une nouvelle notice de visible:

Après avoir ajouter un dépôt (.../ecrire/?exec=depots), cette notice apparait une fois et disparait si je change de page
Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\test2\plugins-dist\revisions\inc\revisions.php on line 564
Elle apparait également une fois quand je fais une recherche de plugin (voir copie d'écran 2)
Mais également, quand je fais afficher le bouton du menu "Développement" (ecrire/?exec=configurer_preferences) qui fonctionne maintenant :)

Pour les sauvegardes de de la bdd, à première vu, cela vient soit de la version alpha1 de php soit de easyphp (j'ai fait un ticket chez eux) car pas moyen d'activer SQlite... Donc, je referais une série de tests quand cela sera ok

#5 Updated by Frédéric Loyer 10 days ago

Au sujet de

Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\test2\plugins-dist\revisions\inc\revisions.php on line 564

Simplement modifier plugins-dist\revisions\inc\revisions.php ligne 564 et ajouter une paire de parenthèses :

$date = ($sec . substr( $ms,1,4 )) - 20;

au lieu de $date = $sec . substr( $ms,1,4 ) - 20;

#6 Updated by Frédéric Loyer 10 days ago

Pour le warning sur time('') (nombre d’arguments incorrects) qui apparaît en PHP 7.3, c'est dû à ce que la fonction PHP time() ne prend pas de paramètre. EN PHP7.2, les paramètres superflus étaient tolérés et ignorés... plus en PHP7.3.

Cf. https://core.spip.net/issues/4215

Même problème, même proposition de correction.

Un petit grep sur REM|time ne me donne que deux occurrences : celle de ce ticket et celle du 4215.

Also available in: Atom PDF