[PHP] mise à jour PHP 7.1.1 vers 7.1.2

Applications, problèmes de configuration réseau
Répondre
brunom
newbie
Messages : 7
Inscription : ven. 16 nov. 2012, 22:34

[PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par brunom »

Bonjour, je rencontre le même soucis sur une VM que ces gens : https://archlinuxarm.org/forum/viewtopi ... 21&p=54711, alors que sur mon bureau la mise à jour s'est bien passée.

Après quelques recherches, j'ai bien vérifié l'accès à /dev/urandom depuis PHP.
Pour isoler le soucis, ce simple test plante :

Code : Tout sélectionner

$a = random_int(0,200);

Il donne ce message :

Code : Tout sélectionner

PHP Fatal error:  Uncaught Exception: Could not gather sufficient random data in -:2
Stack trace:
#0 -(2): random_int(0, 200)
#1 {main}
  thrown in - on line 2
En rétrogradant PHP vers 1.7.1, le site refonctionne et le test aussi.
Avez-vous constaté le problème et connaissez-vous un moyen d'y remédier ?

Mise à jour :

Code : Tout sélectionner

echo '<?php echo random_int(0,2);' | strace php
me donne ce message sur la VM où cela ne fonctionne pas :

Code : Tout sélectionner

getrandom(0x7ffd3b79c170, 8, 0)         = -1 ENOSYS (Function not implemented)
Tandis que sur le bureau où cela fonctionne, getrandom donne quelque chose.
Dernière modification par brunom le mer. 15 févr. 2017, 21:35, modifié 1 fois.
benjarobin
Maître du Kyudo
Messages : 16020
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par benjarobin »

Bonjour,
Tout d'abord quelle est l'architecture matériel (ARM, i686, x86_64, ...) ?
Comment est lancé php ? Depuis un serveur Web, si oui lequel, et comment (fastcgi, module, ...) ?

Quelle est la sortie de :

Code : Tout sélectionner

php <<< "<?php echo random_int(0,200);"
Si ceci échoue quelle est la sortie de

Code : Tout sélectionner

strace php <<< "<?php echo random_int(0,200);" 2>&1 | grep -B1 -A8 rand
Voir https://bugs.archlinux.org/task/52974
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)
brunom
newbie
Messages : 7
Inscription : ven. 16 nov. 2012, 22:34

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par brunom »

Bonjour et merci,

L'architecture c'est une machine virtuelle chez Gandi, noyau 3.10.103-xenU-33-adcc8c8-x86_64. Donc c'est pas tout récent ;-(
Php était lancé via le démon php-fpm, mais comme ça plantait bien, j'ai lancé le test depuis une console.

Code : Tout sélectionner

php <<< "<?php echo random_int(0,200);"
donne le résultat «Could not gather sufficient random data in -:1»

Le deuxième test donne (je coupe) :
munmap(0x7fdcf6180000, 62) = 0
getrandom(0x7ffcd3697fa0, 8, 0) = -1 ENOSYS (Function not implemented)
write(2, "PHP Fatal error: Uncaught Excep"..., 160PHP Fatal error: Uncaught Exception: Could not gather sufficient random data in -:1
En passant à la version précédente, il n'y a pas d'appel à getrandom mais simple lecture de /dev/urandom.
munmap(0x7f95824f8000, 62) = 0
open("/dev/urandom", O_RDONLY) = 3
fstat(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 9), ...}) = 0
benjarobin
Maître du Kyudo
Messages : 16020
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par benjarobin »

getrandom() was introduced in version 3.17 of the Linux kernel.
Je pense qu'il faut faire un rapport de bug au niveau php pour qu'ils rajoutent le fallback sur /dev/urandom si getrandom() n'est pas disponible.
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)
brunom
newbie
Messages : 7
Inscription : ven. 16 nov. 2012, 22:34

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par brunom »

Merci, c'est peut-être justement lié à ceci :
Fix check for linux getrandom syscall
https://github.com/php/php-src/commit/1 ... e0918ccc5d
benjarobin
Maître du Kyudo
Messages : 16020
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par benjarobin »

En effet, le problème de ce commit c'est que c'est fait à la compilation et donc si le pc qui construit le paquet possède le bon define...
Le pire c'est que le define est fournit par un .h, donc même avec un kernel sans getrandom le code compilé l'utilisera.
Bref corriger ceci est trivial mais il faut le faire
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)
brunom
newbie
Messages : 7
Inscription : ven. 16 nov. 2012, 22:34

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par brunom »

J'ai signalé qu'on aimerait bien une vérification de la valeur ENOSYS de errno après l'appel système sur la page github du patch en question.
benjarobin
Maître du Kyudo
Messages : 16020
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par benjarobin »

Ton commentaire n'a aucune chance d'être vu. Si tu es motivé il faut faire une pull request.
Edit: J'en ai fait une : https://github.com/php/php-src/pull/2385
Il faudrait rapporter le bug ici : https://bugs.php.net/report.php
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)
brunom
newbie
Messages : 7
Inscription : ven. 16 nov. 2012, 22:34

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par brunom »

Merci. J'ai tenté de rapporter le problème sur bugs.php.net en mettant ta pull request en lien.
Je n'ai pas trouvé PHP 7.1.2 dans la liste déroulante alors j'ai mis 7.1.2RC1.
Fanch
archer
Messages : 140
Inscription : lun. 01 déc. 2008, 21:16
Contact :

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par Fanch »

Salut,

Même souci sur mon serveur dédié (kernel 3.14.32-xxxx-grs-ipv6-64), quelqu'un a trouvé un moyen de contourner sans downgrader le paquet php ?
"The three principal virtues of a programmer are Laziness, Impatience, and Hubris." -> man perl
benjarobin
Maître du Kyudo
Messages : 16020
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par benjarobin »

Désolé mais ce problème n'est pas contournable... Tu as la solution de recompiler PHP avec le patch qui a été inclus upstream
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)
Fanch
archer
Messages : 140
Inscription : lun. 01 déc. 2008, 21:16
Contact :

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par Fanch »

je compile pas sur mon serveur dédié, j'aurais la solution de passer par afur, mais tu vas me dire que c'est pas une bonne idée ;)
"The three principal virtues of a programmer are Laziness, Impatience, and Hubris." -> man perl
benjarobin
Maître du Kyudo
Messages : 16020
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par benjarobin »

Tu peux très bien compilé sur un autre PC et puis envoyer le paquet via ssh sur ton dedié...
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)
Fanch
archer
Messages : 140
Inscription : lun. 01 déc. 2008, 21:16
Contact :

Re: [PHP] mise à jour PHP 7.1.1 vers 7.1.2

Message par Fanch »

Je confirme que la 7.1.3 qui inclus le bugfix de benjarobin regle le problème chez moi
"The three principal virtues of a programmer are Laziness, Impatience, and Hubris." -> man perl
Répondre