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

Laravel日志时间异常求助:已设Europe/Stockholm时区仍差2小时

解决Laravel日志时间戳偏差2小时的问题

我之前在Valet环境下也碰到过一模一样的问题,折腾了好一会儿才找到根源,给你几个靠谱的排查和解决方向:

  • 给日志通道单独指定时区
    别以为在config/app.php里设置了应用时区就万事大吉了——Laravel的日志组件(Monolog)默认可能会优先用服务器/系统时区,而非应用时区。从Laravel 8版本开始,你可以直接在config/logging.php里为日志通道单独配置时区:
    打开config/logging.php,找到你正在用的日志通道(比如默认的stack或者single),加上一行'timezone' => 'Europe/Stockholm'就行,示例代码:

    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['single'],
            'ignore_exceptions' => false,
            'timezone' => 'Europe/Stockholm', // 新增这行配置
        ],
        // 其他日志通道也可以按这个方式设置
    ],
    
  • 必须清除配置缓存!
    很多人修改了配置文件后忘了清缓存,结果新设置根本不生效。在终端里跑一下这个命令:

    php artisan config:clear
    

    如果你之前执行过php artisan config:cache,那这一步更是必不可少——缓存的配置会直接覆盖你修改的文件内容,等于白改。

  • 检查Valet的PHP环境时区
    Valet用的PHP环境时区可能和你预期的不一样。你可以在项目根目录临时创建一个phpinfo.php文件,内容就一行:

    <?php phpinfo(); ?>
    

    访问这个文件,搜索date.timezone,看看它的值是不是Europe/Stockholm。如果不是,就去修改对应PHP版本的php.ini文件(路径可以在phpinfo里的Loaded Configuration File找到),把date.timezone改成Europe/Stockholm,然后重启Valet:

    valet restart
    
  • 确认系统时区是否正确
    如果你是用MacOS(Valet主要适配Mac),去系统偏好设置→日期与时间里看看,系统时区是不是选的斯德哥尔摩。虽然Laravel理论上会优先用应用配置,但有时候系统时区会影响底层的日志时间戳生成,确认一下没坏处。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:42:21