homestead 里面 phpinfo() 里没有 redis 扩展,怎么安装,
在 /etc/php5/fpm/conf.d 添加 20-redis.ini 文件但是还是不管用
求大神赐教
homestead 里面 phpinfo() 里没有 redis 扩展,怎么安装,
在 /etc/php5/fpm/conf.d 添加 20-redis.ini 文件但是还是不管用
求大神赐教
看楼上的声望都挺高的,我都有点不好反驳
我用过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
扩展不存在的情况。
2 回答2.5k 阅读✓ 已解决
2 回答3.4k 阅读
2 回答1.1k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
2 回答553 阅读✓ 已解决
2 回答1.4k 阅读
1 回答858 阅读✓ 已解决
PHP
是不需要redis
扩展的,在laravel
下安装predis/predis
就足够了PHP
使用的socket
与redis
通讯 所以无需扩展To 被提问者选择的正确答案:
你说的真有理,将
Class
、package
混淆到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
的时候使用用的package
,PhpRedis
的时候用的extension
那么说按你的逻辑,
laravel
也就是扩展了哦,laravel
里面的ORM
也是扩展了,那随便写个函数合集都叫utils
扩展了哦,简直是强词夺理,强盗逻辑。顺便给你看看
composer
的帮助看清楚了
packages
,人家写了extensions
吗?还真是有理,提问者问的是
phpinfo()
里面,请问predis
能显示在phpinfo()
中吗?我其实当时就猜到了这个提问者是问的
redis-server
,后来没时间完善答案,居然被你在这里混淆视听,误人子弟。你可以用比较含糊的词语:组件、引擎、框架、架构来笼统。但是,「扩展」在PHP界,我真是第一次听你那么定义。
也许你会说,这是上纲上线,钻牛角尖,不就一个词语的定义吗?并且也可以含糊点解释,都差不多。
那我只能很遗憾的说,如果新手都在用一个错误(接近错误)的词语咨询问题,那么,传递的讯息首要就是错误的,别人的回答难道不会有偏差?
在学习一门语言中,基础理论,基础知识点,在后期的发展是非常重要的,决定了这个人能成长到什么高度。
如果连一个基础用语都有误差,后面的知识点难道就不会走偏?