homestead中php环境没有redis扩展的窘境,网上的教程也不通用,因为那些教程都只是针对单一机器单一版本php环境下的安装方法,而homestead安装了多个php版本,安装方式略有不同,怎么办?往下看:
注意:命令权限不够时请自动在命令前加上sudo前缀提权;教程还要求你会使用vi编辑器简单地写入文件内容(当然你有其它方法创建文件内容也可以)。
1.使用vagrant命令的ssh选项连接到homestead
vagrant up //启动
vagrant ssh //连接
2.下载编译php的redis扩展
# 如果,没有 phpize (新版本的不自动生成),需要手动安装 phpize
# php 版本,安装的版本也不一样。
$ sudo apt install php5.6-dev
# 这里以php5.6举例。 下边编译的时候,也会带上版本号。如 php5.6
$ cd /usr/local/src/
$ git clone https://github.com/phpredis/phpredis.git
$ cd phpredis
$ sudo /usr/bin/phpize7.1 (不同php版本的情况下phpize版本不同)
$ sudo ./configure --with-php-config=/usr/bin/php-config7.1 (这里边也需要根据情况指定php-config的版本,且和phpize的版本保持一致。)
$ sudo make && make install
编译完成后,redis的php扩展在module目录中,它的文件名是redis.so
3.查看php的extension_dir
php -i|grep extension_dir
在shell窗口中可能会见到如下字段 extension_dir => /usr/lib/php/20160303 => /usr/lib/php/20160303 这说明php的扩展目录是 /usr/lib/php/20160303 或者你用phpinfo()输出一个页面,在里面找extension_dir也可以找到
4.把redis.so扩展模块移入php扩展目录中
sudo mv ./modules/redis.so /usr/lib/php/20160303
5.添加php配置文件的ini文件
sudo vim /etc/php/7.1/fpm/conf.d/20-redis.ini #新增配置
# 添加 extension=redis.so
# 保存 :wq
6.万事大吉,重启php-fpm
sudo service php7.1-fpm restart
到此时,phpredis扩展已经安装配置好了。访问 phpinfo() 就可以看到了。在 php 中 new 一个也是可以的。
比如: new \Redis();
就是在 php -m 中找不到redis扩展,这个奇怪。