Ich habe Redis auf meinem Ubuntu 14-Server mit der Erweiterung phpredis installiert. Ich verwende einen Nginx-Server. Ich habe PHP-Test-Skript
$redis=new Redis() or die("Cannot load Redis module.");
$redis->connect('localhost');
$redis->set('random', Rand(5000,6000));
echo $redis->get('random');
das funktioniert gut von der Befehlszeile aus, aber nicht vom Webbrowser.
Nginx-Fehlerprotokoll:
[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...
ich kann es nicht mal in phpinfo()
sehen
alle mit apt-get install installiert
alle anderen Module (mysql, imagemagick ...) funktionieren einwandfrei
ich habe einige Stunden mit Google verbracht, aber nichts Nützliches gefunden
Die manuelle Installation von Php Redis hat dieses Problem gelöst
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
kopiert aus Rico's Tech Memo
Sie haben Redis installiert, aber keine PHP-Redis. Sie können einfach den folgenden Befehl ausführen, um php-redis zu installieren
Sudo apt-get install php-redis
TLDR;
Auf Ubuntu 16.04 mit NGINX mit PHP 7 habe ich festgestellt, dass PHP-FPM nicht neu gestartet wurde. Ein einfacher Neustart des Dienstes funktionierte für mich: Sudo service php-fpm restart
ODERSudo service php7.0-fpm restart
ODERSudo service php5-fpm restart
Möglicherweise müssen Sie nach "PHP-FPM neu starten" suchen, wenn einer der obigen Befehle nicht funktioniert.
Um etwas Kontext zu geben, hatte ich phpredis mit dem Standard Sudo apt-get install php-redis
installiert und nginx mit Sudo systemctl restart nginx
neu gestartet. Bei jedem Versuch, new Redis()
in PHP zu verwenden, erhielt ich den gleichen Fehler wie in der Frage (.. Klasse 'Redis' nicht gefunden ...).
Bei der Ausführung von phpinfo();
in einer PHP -Datei auf dem NGINX-Server konnte ich sehen, dass PHP-FPM zusätzliche Konfiguration von /etc/php/7.0/fpm/conf.d
(" Scanne dieses Verzeichnis nach zusätzlichen .ini-Dateien " - Abschnitt) lädt. Wenn Sie in diesem Verzeichnis mit einem einfachen ls -al /etc/php/7.0/fpm/conf.d
suchen, kann ich feststellen, dass es einen symbolischen Link mit dem Namen 20-redis.ini
gibt. Diese Datei wurde jedoch nicht im phpinfo-Abschnitt geladen. " Zusätzliche .ini-Dateien analysiert ".
Das Problem, das ich jetzt sehe, ist, dass der Neustart von NGINX PHP-FPM nicht neu gestartet hat. Wenn Sie ps aux | grep php-fpm
verwenden, um zu überprüfen, ob PHP-FPM-Prozesse ausgeführt wurden, als ich gestoppt hatte, bestätigte NGINX meinen Verdacht. Da zum Neustart der PHP-Module ein Neustart erforderlich ist, war der PHP-FPM-Neustart zusätzlich zum Neustart von NGINX erforderlich.