diff --git a/config/app.php b/config/app.php index a6532276..c6905ec9 100644 --- a/config/app.php +++ b/config/app.php @@ -4,6 +4,20 @@ use Illuminate\Support\Facades\Facade; return [ + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | The default timezone for date and date-time functions. Laravel's own + | fallback is the literal string 'UTC' rather than an env() lookup, so + | without this key APP_TIMEZONE has no effect at all and scheduled tasks + | and recurring invoices always run on UTC. + | + */ + + 'timezone' => env('APP_TIMEZONE', 'UTC'), + /* |-------------------------------------------------------------------------- | Class Aliases diff --git a/docker/production/inject.sh b/docker/production/inject.sh index 3119172e..20658249 100644 --- a/docker/production/inject.sh +++ b/docker/production/inject.sh @@ -48,8 +48,13 @@ elif [ "$DB_PASSWORD_FILE" != '' ]; then value=$(<$DB_PASSWORD_FILE) replace_or_insert "DB_PASSWORD" "$value" fi -if [ "$TIMEZONE" != '' ]; then - replace_or_insert "TIMEZONE" "$TIMEZONE" +# Laravel reads APP_TIMEZONE. This previously wrote a bare TIMEZONE key, which +# nothing consumed, so setting the variable silently did nothing. Accept both +# names so existing compose files keep working. +if [ "$APP_TIMEZONE" != '' ]; then + replace_or_insert "APP_TIMEZONE" "$APP_TIMEZONE" +elif [ "$TIMEZONE" != '' ]; then + replace_or_insert "APP_TIMEZONE" "$TIMEZONE" fi if [ "$CACHE_STORE" != '' ]; then replace_or_insert "CACHE_STORE" "$CACHE_STORE"