Redis没有在Docker Container中保存PHP Session

时间:2018-05-04 14:44:55

标签: php docker redis

我一直在尝试在PHP和Redis之间实现会话处理程序。我已经配置了所有内容(根据我的知识和理解),并且没有错误。但是,我仍然无法看到在Redis for PHP代码中生成任何会话。

我的PHP代码:

<?php 
session_start(); 
$_SESSION['count']=(isset($_SESSION['count']))?$_SESSION['count']+1:1; 
$json['time ']= date(' Y-m-d H:i:s'); 
$json['ip ']=$_SERVER['REMOTE_ADDR']; 
$json['count '] = $_SESSION['count']; 
echo json_encode($json);

?>

Php和Redis docker-compose.yml条目如下:

php:
    image: php:7.1-fpm-alpine
    build: './.setup/php/'
    volumes:
      - ./public_html/:/var/www/html/
      - ./.setup/php/php.ini:/usr/local/etc/php/php.ini
      - ./.setup/php/docker-php-ext-redis.ini:/usr/local/etc/php/conf.d/docker-php-ext-redis.ini
    links:
      - redis:cacheserver
    networks:
      public_net:
        ipv4_address: ${PHP_IP}

redis:
    build: ./.setup/cache
    networks:
      public_net:
        ipv4_address: ${REDIS_IP}
    container_name: cacheserver

PHP的Dockerfile:

FROM php:7.1-fpm-alpine

RUN echo http://uk.alpinelinux.org/alpine/latest-stable/community/  >> /etc/apk/repositories \
    && apk add --no-cache shadow curl vim zlib-dev autoconf g++ make re2c \
    && pecl install -o -f redis \
    && docker-php-ext-enable redis.so \
    && pecl clear-cache

Redis的Dockerfile:

FROM redis:3.2-alpine

COPY conf/redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

EXPOSE 6379

php.ini和docker-php-ext-redis.ini的内容:

extension=redis.so

我试着把下面的条目放到php.ini中,然而,它引发了一个错误,截至目前我对它们进行了评论:

#session.save_handler = redis
#session.save_path = tcp://192.168.0.24:6379

错误:

  

警告:session_start():找不到保存处理程序'redis' - session   在第2行的/var/www/html/index.php启动失败

Redis.conf文件只有以下条目才能从任何地方接收请求:

  

绑定0.0.0.0

现在我不知道,问题是什么,最重要的是,我不知道他们将如何沟通。在我的docker-compose.yml文件中,我配置了固定网络,并为两者配置了静态IP。

请提出任何建议。

0 个答案:

没有答案