我一直在尝试在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。
请提出任何建议。