在Ubuntu 14.04上为PHP 7.1安装phpredis

Mic*_*ael 5 php redis phpredis ubuntu-14.04

我的 php -v

PHP 7.1.15-1 + ubuntu14.04.1 + deb.sury.org + 2(cli)(内置:2018年3月6日11:51:39)(NTS)版权所有(c)1997-2018 PHP Group Zend Engine v3. 1.0,版权所有(c)1998-2018 Zend Technologies with Xdebug v2.6.0,Copyright(c)2002-2018,Derick Rethans with Zend OPcache v7.1.15-1 + ubuntu14.04.1 + deb.sury.org + 2,版权所有(c)1999-2018,Zend Technologies

我试过pecl方式

sudo pecl install redis
sudo service php7.1-fpm restart
Run Code Online (Sandbox Code Playgroud)

以及来自https://github.com/phpredis/phpredis的手动方式

phpize
./configure [--enable-redis-igbinary]
make && make install
Run Code Online (Sandbox Code Playgroud)

我确定放了

extension=/usr/lib/php/20170718/redis.so
Run Code Online (Sandbox Code Playgroud)

进入php.ini文件,如我运行时所示 echo phpinfo();

例如

/etc/php/7.1/cli/php.ini
Run Code Online (Sandbox Code Playgroud)

当我运行内置的Web服务器时,我得到了

PHP警告:PHP启动:无法加载动态库'/usr/lib/php/20170718/redis.so' - /usr/lib/php/20170718/redis.so:未定义符号:zend_empty_string在第0行的未知

奇怪的是,PHPStorm自动填充PHP Redis类,所以

$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
Run Code Online (Sandbox Code Playgroud)

我可以点击进入Redis类,看它是正确的.

我想知道它是否是版本差异?也许是因为我使用的是32位?

另一个奇怪的事情是,如果我只是把

extension=redis.so 
Run Code Online (Sandbox Code Playgroud)

php.ini,它似乎在寻找一个较旧的版本

PHP启动:无法加载动态库'/usr/lib/php/20160303/redis.so' - /usr/lib/php/20160303/redis.so:无法打开共享对象文件:未知中的此类文件或目录第0行

我跑的时候

sudo apt-get install php-redis
Run Code Online (Sandbox Code Playgroud)

它安装并意味着没有启动错误显示,但网页仍显示

找不到"Redis"类

我注意到的另一件事是,在Apache中,没有错误,并且找到了类.但是当我运行php的内置Web服务器时,会发现未找到的错误.

alv*_*aco 6

您可能需要使用ppa包来安装它,例如:

sudo apt-get install php7.1-redis
Run Code Online (Sandbox Code Playgroud)


Mic*_*ael 1

好的,我注意到 phpinfo 显示了

PHP API 20160303

这意味着之前的错误是有道理的。Web 服务器的 PHP 版本是 7.1,但是,当运行 phpredis phpize 时,它​​显示的是 7.2 的版本。

所以我只是确保删除 php7.2-dev 并通过 apt-get 重新安装 php7.1,然后重新运行上面的 github 存储库步骤。