J'ai installé Redis sur mon serveur Ubuntu 14 avec l'extension phpredis. J'utilise un serveur Nginx. J'ai un script de test php
$redis=new Redis() or die("Cannot load Redis module.");
$redis->connect('localhost');
$redis->set('random', Rand(5000,6000));
echo $redis->get('random');
qui fonctionne très bien à partir de la ligne de commande mais pas du navigateur Web.
Journal des erreurs Nginx:
[info] 31102#0: Using 32768KiB of shared memory for Push module in /etc/nginx/nginx.conf:82
[error] 31108#0: *21 FastCGI sent in stderr: "PHP message: PHP Fatal error: Class 'Redis' not found in...
je ne le vois même pas dans phpinfo()
tous installés avec apt-get install
tous les autres modules (mysql, imagemagick ...) fonctionnent bien
j'ai passé quelques heures sur google mais je n'ai rien trouvé d'utile
L'installation manuelle de Php Redis a résolu ce problème
git clone git://github.com/nicolasff/phpredis.git
cd phpredis
phpize
./configure
make
Sudo -s make install
Sudo -s
echo "extension=redis.so">/etc/php5/conf.d/redis.ini
ln -s /etc/php5/conf.d/redis.ini /etc/php5/fpm/conf.d/20-redis.ini
exit
copié de Rico's Tech Memo
Vous avez installé redis mais pas php-redis. vous pouvez simplement lancer la commande ci-dessous pour installer php-redis
Sudo apt-get install php-redis
TLDR;
Sur Ubuntu 16.04 utilisant NGINX avec PHP 7, j’ai constaté que PHP-FPM n’avait pas été redémarré. Un simple redémarrage du service a fonctionné pour moi: Sudo service php-fpm restart
OUSudo service php7.0-fpm restart
OUSudo service php5-fpm restart
Vous aurez peut-être besoin de chercher "redémarrer PHP-FPM" au cas où l'une des commandes ci-dessus ne fonctionnerait pas.
Pour donner un peu de contexte, j’avais installé phpredis en utilisant le Sudo apt-get install php-redis
standard et j’ai redémarré nginx en utilisant Sudo systemctl restart nginx
mais chaque fois que j’essayais d’utiliser new Redis()
dans PHP, la même erreur que dans la question (.. . Classe 'Redis' non trouvée ...).
Lors de l'exécution de phpinfo();
dans un fichier PHP sur le serveur NGINX, je pouvais voir que PHP-FPM chargeait une configuration supplémentaire à partir de /etc/php/7.0/fpm/conf.d
(" Recherchez dans ce répertoire d'autres fichiers .ini "). En regardant dans ce répertoire avec un simple ls -al /etc/php/7.0/fpm/conf.d
, je peux voir qu'il existe un lien symbolique nommé 20-redis.ini
mais ce fichier n'a pas été chargé dans la section phpinfo " Fichiers .ini supplémentaires analysés ".
Le problème que je vois maintenant est que le redémarrage de NGINX n'a pas redémarré PHP-FPM. Utiliser ps aux | grep php-fpm
pour voir si des processus PHP-FPM étaient en cours d’exécution lorsque j’avais arrêté NGINX a confirmé mes soupçons. Comme un redémarrage est nécessaire pour recharger les modules PHP, le redémarrage de PHP-FPM était requis en outre au redémarrage de NGINX.