Laravel 5.8 - 时区环境变量

Posted

技术标签:

【中文标题】Laravel 5.8 - 时区环境变量【英文标题】:Laravel 5.8 - Timezone environment variable 【发布时间】:2021-12-14 16:22:51 【问题描述】:

我有一个问题,我似乎无法让 Laravel 获取系统范围的 APP_TIMEZONE 环境变量,我不确定使用 php-fpm 是否会影响。

当我将它添加到 .env 时,使用时区正确设置了 DateTime 当我删除它时,DateTime 现在使用 Laravel app.php 中的 UTC 默认 ('timezone' => env('APP_TIMEZONE', 'UTC'))

当我删除它时,将APP_TIMEZONE 添加到/etc/environment,重新启动,printenv 返回正确的变量,Tinker 也是如此(但我认为它使用的是 CLI 而不是 FPM 进程)并在 Tinker 中实例化日期显示正确时区,但是运行我的应用程序显示日期使用默认值 UTC,这意味着它没有获取系统范围的变量(我在每次更改时都清除了缓存)

感谢您的帮助

【问题讨论】:

【参考方案1】:

config/app 文件中的时区似乎设置为 env() 函数。 这就像说“嘿去看看 .env 文件,看看你是否设置了 APP_TIMEZONE。如果你不使用 UTC。谢谢。”

您可以在 config/app.php 文件中注释掉该行,我相信系统默认值,在这种情况下是您的环境变量,应该优先。

【讨论】:

以上是关于Laravel 5.8 - 时区环境变量的主要内容,如果未能解决你的问题,请参考以下文章

vue项目(vue-cli)配置环境变量和打包时区分开发测试生产环境

转帖linux date 显示指定时区的时间 借助TZ 环境变量 export TZ=Asia/Shanghai 或 America/New_York

Laravel 在 Docker 中无法识别环境变量

根据环境变量运行 Laravel 命令

如何让 Laravel 4 环境变量工作?

Laravel 使用 env 读取环境变量为 null 的问题