Redisをubuntu 14サーバーにphpredis拡張機能でインストールしました。私はNginxサーバーを使用しています。私はphpテストスクリプトを持っています
_$redis=new Redis() or die("Cannot load Redis module.");
$redis->connect('localhost');
$redis->set('random', Rand(5000,6000));
echo $redis->get('random');
_
これは、コマンドラインからは正常に機能しますが、Webブラウザーからは機能しません。
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...
_
phpinfo()
でも見えない
すべてapt-get installでインストールされます
他のすべてのモジュール(mysql、imagemagick ...)は正常に動作しています
私はグーグルで数時間過ごしたが、何も役に立たなかった
Redisはインストールしましたが、php-redisはインストールしていません。以下のコマンドを実行して、php-redisをインストールできます。
Sudo apt-get install php-redis
Php Redisを手動でインストールすると、この問題は解決しました
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
RicoのTech Memo からコピー
TLDR;
Ubuntu 16.04でPHP 7を使用してNGINXを使用している場合、PHP-FPMが再起動されないことがわかりました。サービスを再起動するだけでうまくいきました:
_Sudo service php-fpm restart
_
または
_Sudo service php7.0-fpm restart
_
または
_Sudo service php5-fpm restart
_
上記のコマンドのいずれかが機能しない場合は、「restart PHP-FPM」を検索する必要があるかもしれません。
いくつかのコンテキストを提供するために、標準の_Sudo apt-get install php-redis
_を使用してphpredisをインストールし、_Sudo systemctl restart nginx
_を使用してnginxを再起動しましたが、new Redis()
in PHP質問と同じエラーが表示されました(...クラス 'Redis'が見つかりません...)。
NGINXサーバー上のPHPファイルでphpinfo();
を実行すると、PHP-FPMが_/etc/php/7.0/fpm/conf.d
_( " このdirをスキャンして、追加の.iniファイルを探します "セクション)。単純な_ls -al /etc/php/7.0/fpm/conf.d
_でそのディレクトリを確認すると、次の名前のシンボリックリンクがあることがわかります_20-redis.ini
_が、そのファイルがphpinfoセクションに読み込まれていません "追加の.iniファイルが解析されました"。
今見ている問題は、NGINXを再起動してもPHP-FPMが再起動しなかったことです。 _ps aux | grep php-fpm
_を使用して、NGINXを停止したときにPHP-FPMプロセスが実行されていたかどうかを確認したところ、疑いが確認されました。 PHPモジュールをリロードするには再起動が必要なので、PHP-FPMの再起動が必要でしたさらにからNGINXを再起動します。