homestead 里面 phpinfo() 里没有 redis 扩展,怎么安装

homestead 里面 phpinfo() 里没有 redis 扩展,怎么安装,

在 /etc/php5/fpm/conf.d 添加 20-redis.ini 文件但是还是不管用

求大神赐教

阅读 6.8k
5 个回答

PHP是不需要redis扩展的,在laravel下安装predis/predis就足够了

PHP 使用的socketredis通讯 所以无需扩展


To 被提问者选择的正确答案:

你说的真有理,将Classpackage 混淆到PHP扩展这个概念里面真是有理有据。

你是第一天做PHP吗?PHP扩展(Extension)在广义上就是指借助php的导出的扩展方法编写的源代码,以及编译之后的so、dll文件,我真是纳闷了。

看清楚:
PECL : The PHP Extension Community Library

Laravel手册中原文是
Before using a Redis cache with Laravel, you will need to either install the predis/predis package (~1.0) via Composer or install the PhpRedis PHP extension via PECL.

看清楚,作者在写predis的时候使用用的packagePhpRedis的时候用的extension

那么说按你的逻辑,laravel也就是扩展了哦,laravel里面的ORM也是扩展了,那随便写个函数合集都叫utils扩展了哦,简直是强词夺理,强盗逻辑。

顺便给你看看composer的帮助

composer install --help
Usage:
  install [options] [--] [<packages>]...

Arguments:
  packages                       Should not be provided, use composer require instead to add a given package to composer.json.

看清楚了 packages,人家写了extensions吗?

还真是有理,提问者问的是phpinfo()里面,请问predis能显示在phpinfo()中吗?
我其实当时就猜到了这个提问者是问的redis-server,后来没时间完善答案,居然被你在这里混淆视听,误人子弟。

并且redis本身就可以使用PHP自带的socket通讯就可以完成数据的交换,并且效率上面也不会有太明显的问题,毕竟redis的协议不复杂,用户数据的交换也不复杂。
mysqli相反,在数据量级和效率方面,mysqli编译成扩展还是具备优势的,而自己去用socket实现则会低一些。

你可以用比较含糊的词语:组件、引擎、框架、架构来笼统。但是,「扩展」在PHP界,我真是第一次听你那么定义。

也许你会说,这是上纲上线钻牛角尖,不就一个词语的定义吗?并且也可以含糊点解释,都差不多。

那我只能很遗憾的说,如果新手都在用一个错误(接近错误)的词语咨询问题,那么,传递的讯息首要就是错误的,别人的回答难道不会有偏差?

在学习一门语言中,基础理论,基础知识点,在后期的发展是非常重要的,决定了这个人能成长到什么高度。
如果连一个基础用语都有误差,后面的知识点难道就不会走偏?

看楼上的声望都挺高的,我都有点不好反驳
我用过vagrant,但是没用过homestead
homestead基于vagrant。楼主应该是用的vbox的。实际上就是一个虚拟机,具体的安装你可以直接ssh进去

在使用homestead时也经历和楼主的类似的痛苦,由于phpinfo中为显示未安装redis的扩展,在项目中直接使用new Redis();时报出class redis不存在的致命错误,导致程序无法继续运转。翻阅了相关资料,几经尝试后终于解决。现将解决办法粘贴出来希望对更多人有所帮助。

$ git clone https://github.com/phpredis/phpredis.git
$ cd phpredis                   
$ /usr/bin/phpize7.1  (不同php版本的情况下phpize版本不同)
$ ./configure --with-php-config=/usr/bin/php-config7.1 (这里边也需要根据情况指定php-config的版本,且和phpize的版本保持一致。)
$ make && make install

导致这个问题的原因是homestead集成了多个版本的php,在使用phpize构建扩展文件时,如果未指明具体的版本homestead会使用最新的版本来构建扩展文件,这样就有可能导致编译的扩展和当前使用的php版本不匹配。从而导致虽然表面上看是扩展安装成功了却无法使用的情况,也就会出现在编译好扩展,更改完php.ini配置后还是显示redis扩展不存在的情况。

新手上路,请多包涵

sudo pecl install redis

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题