tp5命令行报 [BadFunctionCallException] not support: redis

记得自己的redis扩展是安装了的,安装在mamp环境下的这个目录/Applications/MAMP/bin/php/php5.6.30/lib/php/extensions/no-debug-non-zts-20131226/redis.so

tp5命令行报 [BadFunctionCallException] not support: redis_第1张图片

tp5命令行报 [BadFunctionCallException] not support: redis_第2张图片

并且在浏览器运行这个代码也是测试成功的

tp5命令行报 [BadFunctionCallException] not support: redis_第3张图片

tp5命令行报 [BadFunctionCallException] not support: redis_第4张图片

 

那么如何一步一步排查呢?

后来才发现PHP在浏览器运行的和php cli模式运行不一致,

mamp 环境下使用php版本是5.6.3

而php cli模式下使用的版本是 5.6.25

tp5命令行报 [BadFunctionCallException] not support: redis_第5张图片

 

mac自带PHP,和apache

安装步骤

tp5命令行报 [BadFunctionCallException] not support: redis_第6张图片

tp5命令行报 [BadFunctionCallException] not support: redis_第7张图片

tp5命令行报 [BadFunctionCallException] not support: redis_第8张图片

git clone https://github.com/phpredis/phpredis.git
cd phpredis
/usr/bin/phpize
./configure --with-php-config=/usr/bin/php-config
make && make install

查看有么有安装上redis扩展

php -m|grep redis

 

tp5命令行报 [BadFunctionCallException] not support: redis_第9张图片

tp5命令行报 [BadFunctionCallException] not support: redis_第10张图片

最后一张图就说明安装上了

 

然后再进行测试

tp5命令行报 [BadFunctionCallException] not support: redis_第11张图片

发现报这个错误 那么需要启动redis服务

tp5命令行报 [BadFunctionCallException] not support: redis_第12张图片

tp5命令行报 [BadFunctionCallException] not support: redis_第13张图片

 

注意 可能redis.so 不能直接复制到这个目录/usr/lib/php/extensions/no-debug-non-zts-20131226

是因为mac系统不允许修改

所以解决方法就是禁掉SIP保护机制,步骤是:
重启系统按住Command + R   (重新亮屏之后就开始按,象征地按几秒再松开,出现苹果标志,ok)菜单“实用工具” ==>> “终端” ==>> 输入csrutil disable;执行后会输出:Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect.再次重启系统
禁止掉SIP后,就可以顺利的安装了,当然装完了以后你可以重新打开SIP,方法同上,只是命令是csrutil enable

最后将/modules生成目录的redis.so文件复制到目录/usr/lib/php/extensions/no-debug-non-zts-20131226即可

你可能感兴趣的:(php)