linux系统下,php设置时区和调用时间函数问题,服务器是nginx.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统下,php设置时区和调用时间函数问题,服务器是nginx.相关的知识,希望对你有一定的参考价值。

1.Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.

2.Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.

3.Notice: date_default_timezone_set(): Timezone ID 'Asia/Shanghai' is invalid

在网上苦苦搜寻了好长时间,php.ini中也设置过date.timezone;php脚本文件里面也用了date_default_timezone_set()。。。苦恼中,依然没有解决
php.ini里面已经设置了date.timezone=Asia/Shanghai,等中国的都试过,php脚本文件里面也用了date_default_timezone_set(‘Asia/Shanghai’)设置,安全模式是关闭的。都不起作用。。。

date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai' 亚洲/上海
date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'为“亚洲/重庆”
date_default_timezone_set('PRC');//其中PRC为“中华人民共和国”

是区分大小写的,还需要php中关闭安全模式,或允许date_default_timezone_set执行
参考技术A 用time()获得时间,用gmdate()设置时间,相差8×3600s的问题,不是加就是减,自己试试吧追问

谢谢,我想知道上面几个问题是什么原因,怎样解决

追答

linux下注意大小写,Asia/Shanghai,'Asia/Shanghai',''Asia/Shanghai"试试

参考技术B

    在程序头加上 date_default_timezone_set('PRC');

    如果可以修改php.ini 则将  date.timezone = PRC  设置一下


试试看

参考技术C date_default_timezone_set('PRC');

换成prc呢

参考技术D date_default_timezone_set(‘Asia’)试下吧

Docker时区timezone问题

原文:Docker时区timezone问题

Linux时间类型

  • 在Unix类的机器下的/usr/share/zoneinfo/文件内为所有代码调用的ZONEINFO的数据位置,想查看设置哪个时区时,直接去里边看名字即可。
    技术图片

docker时间、时区问题

docker容器内默认为utc时间

docker-compose启动时的设置:

设置容器内为宿主机时间:

volumes:
  - /etc/localtime:/etc/localtime:ro
  - /etc/timezone:/etc/timezone:ro   # 这个只在Linux上有
  # “ro”的意思是只读(read-only)模式,可以保证其挂载卷不被 Docker 容器内部文件系统配置所覆盖

# 通过环境变量设置时区    
environment:
  - TZ=Asia/Shanghai   # 设置容器时区为CST
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

dockerfile进行镜像设置生成

RUN echo "Asia/Shanghai" > /etc/timezone
RUN dpkg-reconfigure -f noninteractive tzdata

# 已上是 Ubuntu 修改时区的命令。
# Docker 默认使用 Ubuntu系统。
# 如果你的自定义镜像使用的是其他发行版,那么这里的命令也要改变
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

容器启动时直接设置

docker run -v /etc/localtime:/etc/localtime <IMAGE:TAG>
  • 1

以上是关于linux系统下,php设置时区和调用时间函数问题,服务器是nginx.的主要内容,如果未能解决你的问题,请参考以下文章

PHP strtotime 函数 - 依赖系统的时区不安全?

php如何获取服务器所在的时区?

Linux下查看/修改系统时区时间

转载:Linux下查看/修改系统时区时间

Linux下使用timedatectl命令时间时区操作详解

Linux下使用timedatectl命令时间时区操作详解