SysPass php 7.2
SysPass
n'était pas compatible sur la version 7.1
et 7.2
de php. Lors de l'installation de la version 2.1.16 sur une machine Ubuntu 18.04
avec la version 7.2
de php, l'application semble fonctionner moyennant deux modifications, faisant l'objet de l'anomalie 808.
Votre avis
Nobody voted on this yet
|
|
Préparation environnement
Afin de conserver le paquet original, un copie est réalisée.
#sudo cp -R -p /var/opt/syspass/2.1.16.18061901 /var/opt/syspass/2.1.16.18061901.1
Modifications
La première modification consiste à authoriser une version de php supérieure à 7.0
. Dnas le cadre de cette modification, la limite est fixée à 7.3
, puisque la version utilisée est 7.2
.
Pour cela, il faut modifier la fonction checkPhpVersion
dans le fichier inc/SP/Util/Checks.class.php
.
/**
* Comprobar la versión de PHP.
*
* @return bool
*/
public static function checkPhpVersion()
{
return version_compare(PHP_VERSION, '5.6.0', '>=') && version_compare(PHP_VERSION, '7.3.0') === -1;
// return version_compare(PHP_VERSION, '5.6.0', '>=') && version_compare(PHP_VERSION, '7.1.0') === -1;
}
Une fois actif, un bug se produit lors de l'affichage des comptes. Le message suivant est affiché dans les traces sur serveur eb.
PHP Fatal error: Uncaught TypeError: Argument 1 passed to SP\\Core\\Session::setAccountColor() must be of the type array, string given, called in .../inc/SP/Account/AccountSearch.class.php on line 664 and defined in .../inc/SP/Core/Session.class.php:436 Stack trace: #0 .../inc/SP/Account/AccountSearch.class.php(664): SP\\Core\\Session::setAccountColor(' #') #1 .../inc/SP/Account/AccountSearch.class.php(333): SP\\Account\\AccountSearch->pickAccountColor(2) #2 .../inc/SP/Controller/AccountSearchController.class.php(196): SP\\Account\\AccountSearch->processSearchResults() #3 .../inc/SP/Controller/AccountSearchController.class.php(398): SP\\Controller\\AccountSearchController->getSearch() #4 .../ajax/ajax_getContent.php(75): SP\\Controller\\AccountSearchController->doAction() #5 {main}\n thrown in /var/opt/syspass/2.1.16.18061901/inc/SP/Core/Session.class.php on line 436
Il se trouve qu'une variable n'est pas initialiser en tant que tableau lors de la première utilisation. Afin de remédier à ce problème une recherche a été réaliser sur l'utilisation de la fonction setAccountColor
et getAccountColor
du fichier inc/SP/Core/Session.class.php
.
Finalement, il a été opté pour modifier la fonction getAccountColor
afin de vérifier si le tableau doit être préalablement initialisé. La modification est la suivante.
/**
* Devolver el color asociado a una cuenta
*
* @return string
*/
public static function getAccountColor()
{
$tmpAccountColor = self::getSessionKey('accountcolor');
if (!is_array($tmpAccountColor)
) {
$tmpAccountColor = array();
self::setAccountColor($tmpAccountColor);
}
return $tmpAccountColor;
// return self::getSessionKey('accountcolor');
}
Dans le cas où le variable retournée par self::getSessionKey('accountcolor')
n'est pas un tableau, celui-ci est alors initialisé et stocké dans la session.
Activation
Il faut ensuite modifié le lien mis en place.
#sudo rm /var/opt/syspass/syspass #sudo ln -s /var/opt/syspass/2.1.16.18061901.1 /var/opt/syspass/syspass #sudo chown -h www-data:www-data /var/opt/syspass/syspass