You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker php:7.4-apache容器修改PHP会话时长未生效,排查正确php.ini位置

解决Docker php:7.4-apache容器中PHP会话生命周期配置问题

第一步:确认实际加载的php.ini文件路径

要明确容器中PHP真正使用的配置文件,有两种简单方式:

  • 进入容器执行命令:
    docker exec -it [你的容器名称/ID] php -i | grep "Loaded Configuration File"
    
  • 查看phpinfo()输出中的Loaded Configuration File条目,如果显示为(none),说明PHP当前未加载自定义php.ini,完全使用默认配置。

为什么你的修改不生效?

官方php:7.4-apache镜像默认不会自动启用php.ini-production或php.ini-development,这两个只是示例配置文件,PHP默认不会加载它们,所以修改这两个文件不会影响运行时的配置。

正确的配置方式

有两种可靠方法修改会话生命周期参数:

方法1:启用并修改主php.ini

在Dockerfile中先将示例配置文件复制为PHP加载的主配置文件,再修改参数:

# 复制生产环境示例配置为正式php.ini
RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini

# 修改会话生命周期参数
RUN sed -i "s/session.gc_maxlifetime = 1440/session.gc_maxlifetime = 604800/g" /usr/local/etc/php/php.ini
RUN sed -i "s/session.cookie_lifetime = 0/session.cookie_lifetime = 604800/g" /usr/local/etc/php/php.ini

也可以合并为一条命令减少镜像层数:

RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini && \
    sed -i "s/session.gc_maxlifetime = 1440/session.gc_maxlifetime = 604800/g" /usr/local/etc/php/php.ini && \
    sed -i "s/session.cookie_lifetime = 0/session.cookie_lifetime = 604800/g" /usr/local/etc/php/php.ini

方法2:使用自定义配置片段(推荐)

官方PHP镜像会自动加载/usr/local/etc/php/conf.d/目录下所有.ini文件,你可以创建单独的配置文件覆盖默认参数,无需修改主php.ini:

  1. 在项目目录下创建session-config.ini文件,内容如下:
    session.gc_maxlifetime = 604800
    session.cookie_lifetime = 604800
    
  2. 在Dockerfile中添加复制命令:
    COPY session-config.ini /usr/local/etc/php/conf.d/
    

内容的提问来源于stack exchange,提问作者hoefp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:40:33