Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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
如何在php fpm容器中创建用户会话卷?_Php_Laravel_Session_Docker - Fatal编程技术网

如何在php fpm容器中创建用户会话卷?

如何在php fpm容器中创建用户会话卷?,php,laravel,session,docker,Php,Laravel,Session,Docker,我的网站基于docker容器中的代码,docker文件如下: FROM php:7.1-fpm RUN apt-get update && apt-get install -y libmcrypt-dev \ mysql-client libmagickwand-dev --no-install-recommends \ && pecl install imagick \ && docker-php-ext-enable

我的网站基于docker容器中的代码,docker文件如下:

FROM php:7.1-fpm

RUN apt-get update && apt-get install -y libmcrypt-dev \
    mysql-client libmagickwand-dev --no-install-recommends \
    && pecl install imagick \
    && docker-php-ext-enable imagick \
    && docker-php-ext-install mcrypt pdo_mysql opcache gd

#ADD php.conf/opcache.ini    /etc/php/7.1/mods-available/opcache.ini
ADD build/prod/php.conf/www.conf       /usr/local/etc/php-fpm.d/
ADD build/prod/php.conf/php.ini        /usr/local/etc/php/

COPY .  /app

WORKDIR /app

RUN chmod 777 -R storage/
RUN php artisan cache:clear && php artisan key:generate
RUN nohup php artisan queue:work &
我构建CI流程,只是用代码创建新的应用程序容器,然后删除旧的。但每次“娱乐”之后,登录的用户都会注销。我确信这是因为旧容器包含PHP会话,我想将它们添加到卷中,但我没有找到它们。 My php.ini:

session.save_handler = files
session.use_cookies = 1
session.cookie_path = /
我使用Laravel framework,我的sessions.php配置有:

'driver' => 'file',
'files' => storage_path('framework/sessions'),
'path' => '/',

卷到路径框架/会话没有帮助

当您运行
php artisan key:generate
时,它会为应用程序密钥生成新值。您可以在.env文件(项目根目录)中看到它的值

应用程序密钥用于加密和解密会话数据(以及其他内容),因此当您再次生成密钥时,laravel无法访问以前的会话数据

如果您将docker卷用于会话文件,但是APP_KEY发生了更改,则storage/framework/sessions中的会话文件将变得无用

通过登录本地网站,运行命令
php-artisan-key:generate
,并刷新页面,这很容易在本地进行测试。您将被注销

要解决会话问题,请在每次创建容器时使用相同的APP_键

您可以将key作为环境变量传递给docker run-e APP_key=''…,但需要启用

注意:即使您使用不同的会话驱动程序(redis、数据库、memcached等等),键也应该保持不变

更多关于

Laravel安装文档


有关

的更多信息当您运行
php artisan key:generate
时,它会为应用程序密钥生成新值。您可以在.env文件(项目根目录)中看到它的值

应用程序密钥用于加密和解密会话数据(以及其他内容),因此当您再次生成密钥时,laravel无法访问以前的会话数据

如果您将docker卷用于会话文件,但是APP_KEY发生了更改,则storage/framework/sessions中的会话文件将变得无用

通过登录本地网站,运行命令
php-artisan-key:generate
,并刷新页面,这很容易在本地进行测试。您将被注销

要解决会话问题,请在每次创建容器时使用相同的APP_键

您可以将key作为环境变量传递给docker run-e APP_key=''…,但需要启用

注意:即使您使用不同的会话驱动程序(redis、数据库、memcached等等),键也应该保持不变

更多关于

Laravel安装文档


更多关于

的信息,您可以使用Redis来做这类事情,因为无论您是否拥有卷……当您将“重新创建”容器时……显然,正在运行的容器将重新启动。您可以使用卷,但是,您还需要进行滚动升级:)您是否可以尝试将session.save_path(如果您无法识别位置)设置到所需的位置,然后将装入的卷使用到指定的路径?您可以使用Redis来执行这类操作,因为不管您是否拥有卷……当您将“重新创建”容器时……显然,正在运行的容器将重新启动。您可以使用卷,但是,您还需要进行滚动升级:)是否可以尝试将session.save_path(如果您无法识别位置)设置到所需的位置,然后将装入的卷使用到指定的路径?