Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 846|回复: 0

CentOS+Apache+php无法访问redis的解决方法

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-6-30 20:05:13 | 显示全部楼层 |阅读模式

     

     

    PHP 使用 Redis

    安装

    开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP。 接下来让我们安装 PHP redis 驱动:下载地址为:https://github.com/phpredis/phpredis/releases

    PHP安装redis扩展

    以下操作需要在下载的 phpredis 目录中完成:

    $ wget https://github.com/phpredis/phpredis/archive/2.2.4.tar.gz $ cd phpredis-2.2.7 # 进入 phpredis 目录 $ /usr/local/php/bin/phpize # php安装后的路径 $ ./configure --with-php-config=/usr/local/php/bin/php-config $ make && make install

    如果你是 PHP7 版本,则需要下载指定分支:

    git clone -b php7 https://github.com/phpredis/phpredis.git

    修改php.ini文件

    vi /usr/local/php/lib/php.ini

    增加如下内容:

    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626" extension=redis.so

    安装完成后重启php-fpm 或 apache。查看phpinfo信息,就能看到redis扩展。

    PHP 使用 Redis


    连接到 redis 服务

    <?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully"; //查看服务是否运行 echo "Server is running: " . $redis->ping(); ?>

    执行脚本,输出结果为:

    Connection to server sucessfully Server is running: PONG

    Redis PHP String(字符串) 实例

    <?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully"; //设置 redis 字符串数据 $redis->set("tutorial-name", "Redis tutorial"); // 获取存储的数据并输出 echo "Stored string in redis:: " . $redis->get("tutorial-name"); ?>

    执行脚本,输出结果为:

    Connection to server sucessfully Stored string in redis:: Redis tutorial

    Redis PHP List(列表) 实例

    <?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully"; //存储数据到列表中 $redis->lpush("tutorial-list", "Redis"); $redis->lpush("tutorial-list", "Mongodb"); $redis->lpush("tutorial-list", "Mysql"); // 获取存储的数据并输出 $arList = $redis->lrange("tutorial-list", 0 ,5); echo "Stored string in redis"; print_r($arList); ?>

    执行脚本,输出结果为:

    Connection to server sucessfully Stored string in redis Redis Mongodb Mysql

    Redis PHP Keys 实例

    <?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully"; // 获取数据并输出 $arList = $redis->keys("*"); echo "Stored keys in redis:: "; print_r($arList); ?>

    执行脚本,输出结果为:

    Connection to server sucessfully Stored string in redis:: tutorial-name tutorial-list

     

     

     

     

     

     

    问题处理:

     

    在CentOS下配置Apache+php+redis+phpredis环境。
    编辑访问redis缓存的php程序test.php,以应用程序方式在后台运行,可成功访问Redis,而在Apache下以网页形式访问时则出错,在 访问Redis以及之后的代码均不再执行。查看Apache的日志:/var/log/httpd/error_log,发现代码运行时出现异常:
    PHP Fatal error: Uncaught exception ‘RedisException’ with message ‘Redis server went away’ in /var/www/html/test.php

    在网上查该异常时均认为是php的Sokcet超时时间设置的过短,应该在代码前加上:ini_set(‘default_socket_timeout’, -1);
    经测试仍无法解决该问题,因在代码后台运行正常,因此判断并非代码本身问题,而是Apache不允许访问网络资源,尝试如下解决方法:
    打开/etc/selinux/config,找到其中的:
    SELINUX=enforcing
    改为:SELINUX=disabled

    问题解决!

    如果仍不能解决问题,可执行如下指令:
    /usr/sbin/setsebool httpd_can_network_connect=1

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-4 01:52 , Processed in 1.046942 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表