web-dev-qa-db-fra.com

Installer phpredis sur Ubuntu 14.04 pour PHP 7.1

Mon php -v

PHP 7.1.15-1 + ubuntu14.04.1 + deb.sury.org + 2 (cli) (construit le 6 mars 2018 11:51:39) (NTS) Droits d'auteur (c) 1997-2018 Le PHP Group Zend Engine V3.1.0, Copyright © 1998-2018 Zend Technologies Avec Xdebug v2.6.0, Copyright (c) 2002-2018, par Derick Rethans avec Zend OPcache v7.1.15-1 + ubuntu14.04.1 + deb.sury.org + 2, Copyright (c) 1999-2018, par Zend Technologies

J'ai essayé à la fois la manière pecl

Sudo pecl install redis
Sudo service php7.1-fpm restart

Et la manière manuelle de https://github.com/phpredis/phpredis

phpize
./configure [--enable-redis-igbinary]
make && make install

Je me suis assuré de mettre 

extension=/usr/lib/php/20170718/redis.so

dans le fichier php.ini comme indiqué lorsque j'exécute echo phpinfo();

par exemple. 

/etc/php/7.1/cli/php.ini

Lorsque je lance le serveur Web intégré, je reçois

Avertissement PHP: PHP Startup: impossible de charger la bibliothèque dynamique '/Usr/lib/php/20170718/redis.so' - /usr/lib/php/20170718/redis.so: symbole non défini: zend_empty_string dans Unknown sur la ligne 0

Étrangement, PHPStorm exécute automatiquement la classe PHP Redis, afin 

$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);

Je peux cliquer sur la classe Redis et voir que c'est la bonne. 

Je me demande si c'est une différence de version? Peut-être parce que j'utilise 32 bits?

Une autre chose étrange est, si je mets juste 

extension=redis.so 

dans php.ini, il semble être à la recherche d'une version plus ancienne

Démarrage PHP: impossible de charger la bibliothèque dynamique '/Usr/lib/php/20160303/redis.so' - /usr/lib/php/20160303/redis.so: Ne peut pas ouvrir un objet partagé file: Aucun fichier ou répertoire de ce type dans Unknown à la ligne 0

Quand je cours 

Sudo apt-get install php-redis

il installe et signifie qu'aucune erreur de démarrage ne s'affiche, mais la page Web affiche toujours un 

Classe 'Redis' introuvable

Une autre chose que je remarque est que dans Apache, il n'y a pas d'erreur, et la classe est trouvée. Mais lorsque je lance le serveur Web intégré de php, l'erreur non trouvée apparaît.

5
Michael

Ok donc j'ai remarqué que phpinfo a montré 

API PHP 20160303

ce qui signifie que l'erreur précédente a un sens. La version PHP du serveur Web est 7.1, cependant, lors de l'exécution de phpredis phpize, il affiche celui de 7.2.

Je me suis donc assuré de supprimer php7.2-dev et de réinstaller php7.1 via apt-get, puis de réexécuter les étapes du repo github ci-dessus.

0
Michael

Peut-être avez-vous juste besoin d'installer ceci en utilisant un paquet ppa comme: 

Sudo apt-get install php7.1-redis
5
alvaropaco