Page 1 sur 1

[PHP] mise à jour PHP 7.1.1 vers 7.1.2

Publié : mer. 15 févr. 2017, 21:12
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.

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

Publié : mer. 15 févr. 2017, 21:18
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

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

Publié : mer. 15 févr. 2017, 21:55
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

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

Publié : mer. 15 févr. 2017, 22:15
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.

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

Publié : mer. 15 févr. 2017, 22:26
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

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

Publié : mer. 15 févr. 2017, 22:34
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

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

Publié : mer. 15 févr. 2017, 23:20
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.

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

Publié : mer. 15 févr. 2017, 23:26
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

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

Publié : jeu. 16 févr. 2017, 09:38
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.

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

Publié : sam. 25 févr. 2017, 15:47
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 ?

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

Publié : sam. 25 févr. 2017, 15:58
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

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

Publié : sam. 25 févr. 2017, 16:04
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 ;)

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

Publié : sam. 25 févr. 2017, 16:46
par benjarobin
Tu peux très bien compilé sur un autre PC et puis envoyer le paquet via ssh sur ton dedié...

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

Publié : sam. 08 avr. 2017, 10:54
par Fanch
Je confirme que la 7.1.3 qui inclus le bugfix de benjarobin regle le problème chez moi