You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新RHEL服务器:Redis可通过redis-cli连接,但PHP连接提示权限拒绝

PHP连接Redis提示权限拒绝的排查方案

问题背景

新部署的RHEL服务器上,已经装好Redis和php-pecl-redis6扩展,用redis-cli能正常连接Redis服务,但PHP执行$redis->connect('localhost', 6379);时,抛出RedisException异常提示权限拒绝,端口确认无误。

可能的原因

  • SELinux权限限制:RHEL默认启用SELinux,大概率是它阻止了PHP进程连接Redis端口。
  • Redis绑定地址限制:Redis配置里的bind参数如果只绑定了特定IP,未包含127.0.0.1,PHP用localhost连接就会被拒绝。
  • PHP进程权限不足:运行PHP的用户(比如apache、nginx、php-fpm用户)没有访问Redis网络端口或套接字的权限。
  • 防火墙规则拦截:虽然redis-cli能连接,但防火墙可能对PHP进程的访问做了针对性限制。

解决方案

  1. 调整SELinux策略
    先临时关闭SELinux测试:
    setenforce 0
    
    如果问题解决,添加永久规则放行:
    • 用Apache运行PHP,执行:
      setsebool -P httpd_can_network_connect on
      
    • 用Nginx+PHP-FPM运行PHP,执行:
      setsebool -P httpd_can_network_connect on
      setsebool -P httpd_can_network_connect_db on
      
  2. 修正Redis绑定配置
    打开Redis配置文件/etc/redis.conf,检查bind参数:
    改为仅允许本地连接:
    bind 127.0.0.1
    
    或允许所有地址连接:
    bind 0.0.0.0
    
    修改完成后重启Redis服务:
    systemctl restart redis
    
  3. 检查PHP进程权限
    用ps aux | grep php-fpm(或对应运行PHP的进程命令)查看运行PHP的用户,确保该用户能访问Redis的6379端口;如果用unix套接字连接Redis,需保证套接文件的权限对该用户开放。

内容的提问来源于stack exchange,提问作者Fibericon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 07:17:35