php连接redis出现Redis server went away

出现这个问题的描述:

phpredis的版本是:phpredis-2.2.4.zip

redis的版本是:redis-2.8.6.tar.gz

linux的版本是:Linux 2.6.32-71.el6.i686 i686(centos)

安装好redis和phpredis拓展后。就运行下面程序

<?php
        ini_set('default_socket_timeout', -1);
        $redis = new Redis();
        $ret = $redis->connect("127.0.0.1",6379);
        $redis->set("user","xuwenqiang");
        echo $redis->get("user");

然后在用浏览器访问该文件的时候。会在$redis->connect();这一步报错,就是redis服务器没有连接上。但奇怪的是,linux里面redis-cli的操作都是正常的。使用phpinfo();函数也可以看到phpredis的拓展已经装上。开始以为是phpredis和redis的版本不对应。但是自己已经使用同一版本的在另外一台centos中安装成功。还有,在linux命令行中使用php redis.php是可以运行出结果的。这说明php的拓展phpredis是没有问题的,是可以连上redis服务器了。我意识到应该是在apache服务器出现了问题。但检查了apache的配置文件httpd.conf也没有发现问题。接下来,就想配置一个apache虚拟主机试一下。在配置虚拟主机的时候出现一个 DocumentRoot  does not exist错误。在我的遭遇中,是因为selinux的安全机制才导致这个错误。当我解决掉这个错误,运行起服务器的时候,这个redis.php在浏览器就可以正常运行了。所以,出现Redis server went away 的原因就找到了。selinux。解决方案是:

/usr/bin/setenforce 是用来修改SELinux的实时运行模式的
 临时打开:
setenforce 1          ----设置SELinux 成为enforcing模式
 临时关闭:
setenforce 0          ----设置SELinux 成为permissive模式
 如果要彻底禁用SELinux 需要在/etc/sysconfig/selinux中设置参数selinux=0 ,或者在/etc/grub.conf中添加这个参数
 /usr/bin/setstatus -v
找了一下为什么selinux会影响到redis的访问的原因。发现是selinux访问控制的原因。详情可参考 selinux入门

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值