AMH面板php中设置session为redis的设置方法

社区话题 Linux/macOS 与自动化运维 AMH面板php中设置session为redis的设置方法

标签: ,

  • 该话题为空。
正在查看 0 条回复
  • 作者
    帖子
    • #1338

      追光
      管理员

      要在 AMH 面板(或任何 PHP 环境)中通过 `php.ini` 配置将 Session 存储到 **带密码认证的 Redis**,只需在 `session.save_path` 中添加 `auth` 参数即可。

      没有为redis设置密码的session配置:

      
      session.save_handler = redis
      session.save_path = "tcp://127.0.0.1:6379?database=15&prefix=PHPREDIS_SESSION:"
      

      如果 Redis 设置了密码(例如密码为 `your_redis_password`),则修改为:

      session.save_path = "tcp://127.0.0.1:6379?auth=your_redis_password&database=15&prefix=PHPREDIS_SESSION:"

      > ⚠️ 注意:
      > – `auth` 参数必须放在 `tcp://…` 的查询字符串中。
      > – 如果密码中包含特殊字符(如 `@`、`:`、`?`、`&` 等),需要进行 URL 编码(例如 `@` 编码为 `%40`)。
      > – 确保 PHP 安装了 `redis` 扩展(不是 `phpredis` 扩展名,而是 `session.save_handler = redis` 所依赖的那个,通常由 `php-redis` 包提供)。

      完整示例(带密码):

      
      [Session]
      session.save_handler = redis
      session.save_path = "tcp://127.0.0.1:6379?auth=your_redis_password&database=15&prefix=PHPREDIS_SESSION:"
      session.use_cookies = 1
      session.use_only_cookies = 1
      session.cookie_httponly = 1
      session.cookie_samesite = Lax
      session.cookie_secure = off
      session.name = PHPSESSID
      session.auto_start = 0
      session.gc_probability = 1
      session.gc_divisor = 1000
      session.gc_maxlifetime = 1440
      session.hash_function = 1
      session.hash_bits_per_character = 5
      session.serialize_handler = php
      

      配置完成后,**重启 PHP-FPM 或 Web 服务**(如 Apache/Nginx + PHP-FPM)使配置生效。

      你可以通过以下 PHP 代码测试是否生效:

      <?php
      session_start();
      $_SESSION['test'] = 'redis works with password';
      echo "Session saved. Check Redis key: PHPREDIS_SESSION:" . session_id();
      ?>

      然后用 redis-cli 连接并查看:

      redis-cli -a your_redis_password
      SELECT 15
      GET PHPREDIS_SESSION:<your_session_id>

      如果能读到序列化内容,说明配置成功。

正在查看 0 条回复
  • 在下方一键注册,登录后就可以回复啦。