Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis没有在Docker容器中保存PHP会话_Php_Docker_Redis - Fatal编程技术网

Redis没有在Docker容器中保存PHP会话

Redis没有在Docker容器中保存PHP会话,php,docker,redis,Php,Docker,Redis,我一直在尝试在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 ']=$_SERVE

我一直在尝试在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的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
错误:

警告:会话_start():找不到保存处理程序“redis”-会话 在第2行的/var/www/html/index.php中启动失败

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

绑定0.0.0.0

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


请提供任何建议。

i您之所以要提供自定义容器名称?@delboy-只是为了与PHP链接并拥有容器的正确名称,以便我可以轻松地与容器连接。没有其他原因,如果有其他方法,我很乐意实现它。您可以使用yaml键作为主机名。因此没有别名或ip地址,您应该能够调用
tcp://redis:6379
我在您建议之前尝试过,当我取消注释它们时,我得到一个错误:警告:session_start():在第2行的/var/www/html/index.php中找不到保存处理程序'redis'-会话启动失败。这是我当前的条目:extension=redis.so session.save\u handler=redis session.save\u path=tcp://redis:6379I 仅注释-session.save_handler=redis并重试。这一次我遇到了以下错误:警告:会话\u start():打开(tcp://redis:6379/sess_32c32ed0698b3d57e72df4d9e274201e,O_RDWR)失败:第2行的/var/www/html/index.php中没有这样的文件或目录(2)。警告:session_start():读取会话数据失败:文件(路径:tcp://redis:6379)在第2行{“时间”的/var/www/html/index.php中:“2018-05-04 16:04:20”,“ip”:“192.168.0.33”,“计数”:1}
#session.save_handler = redis
#session.save_path = tcp://192.168.0.24:6379