Redis не сохраняет сессию PHP в Docker-контейнере - PullRequest
0 голосов
/ 04 мая 2018

Я пытался достичь обработчик сеанса между PHP и Redis. Я настроил все (согласно моим знаниям и пониманию), и нет ошибки как таковой. Но, тем не менее, я не вижу каких-либо сессий, генерируемых в Redis для кода 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

Dockerfile для PHP:

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

Dockerfile для Redis:

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' - сессия Ошибка запуска в /var/www/html/index.php в строке 2

Файл Redis.conf имеет только следующую запись для получения запроса из любого места:

bind 0.0.0.0

Теперь я не знаю, в чем проблема, главное, я не понимаю, как они оба будут общаться. В моем файле docker-compose.yml я настроил фиксированную сеть и настроил статический IP-адрес для обоих.

Любое предложение, пожалуйста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...